vimrc - как заблокировать комментарий?

14

Я не хочу комментировать строки текста в текстовом файле или коде. Я ищу для вставки комментариев блока в файле .vimrc . Для вставки однострочного комментария "используется, например:

" remove spaces and tabs as well  at the end of line automatically while saving
autocmd BufWritePre * :%s/\s\+$//e

Теперь у меня есть сравнительно большое количество настроек / конфигов / плагинов, собранных за годы после просмотра Интернета, чтобы добавить интересные функции. Я хочу добавить несколько больших блоков комментариев в мой файл .vimrc. Добавление "к каждой строке - вариант, но я ищу синтаксис блочного комментария. Аналогично /**/в C.

//идентично "
/* */идентично _ ____ ?

Поиск в Unix.SE, SO и поиск в Google не сильно помог.

холодный морской тропический воздух
источник
1
Я подозреваю, что функция многострочных комментариев не существует в файлах vim-config.
Dilawar

Ответы:

5

Я не думаю, что это возможно. Лучшее, что вы сможете сделать, - это выделить блок некоторым текстом и выполнить поиск / замену первого символа s/^/"/в vim, чтобы вставить a "в начало каждой строки.

Плагин vim NERD Commenter также может помочь сделать это проще.

SLM
источник
1
Я использую обходной путь:., + 3s / ^ / "/, где точка представляет текущую строку, а +3 представляет количество последовательных (после пунктирной линии) линий.
Да,
6

Мое решение состоит в том, чтобы обернуть код внутри function.

Это хорошо работает в vimrc, например, для тестов выделения синтаксиса heredoc на месте , которые также требуют реальных блочных комментариев без начальных символов. В моем vimrc я использую такой блок непосредственно после настройки моего heredoc SyntaxRanges .

function! _blockcomment()

    " free text comment
    You can write free text here,
    but vim will try to highlight it as vimscript!

    " markdown heredoc
    test <<MD
    ### Nevertheless ###
    * for testing my fuzzy SyntaxRange heredocs
    * having no leading chars is essential
    * and the blockcomment function does the trick
    MD  

endfunction 

Это решение похоже на if 0трюк @ Стефана , который у меня не сработал. Просто убедитесь, что никогда не вызываете эту функцию!

Юве
источник
1

Один трюк:

  • поместите курсор на первый символ первой строки, чтобы комментировать
  • нажмите Ctrl-V, чтобы войти в режим Visual Block
  • переместите курсор вниз до последней строки комментария
  • нажмите I (Shift + I), чтобы войти в режим условной вставки
  • нажмите «», чтобы прокомментировать (цитата и пробел)
  • нажмите Esc, чтобы выйти из режима вставки

Все выбранные вами строки теперь начинаются с строки, введенной вами в режиме вставки.

lgeorget
источник
Спасибо, но я искал стиль блочных комментариев в vimrc .
MTK
Я не думаю, что есть такая особенность в vim. Кстати, это не так часто. Во многих языках сценариев более обычным является использование однострочных комментариев в диапазоне строк.
lgeorget
1

Используйте tCommentплагин для Vim: http://www.vim.org/scripts/script.php?script_id=1173

Да, он поддерживает Python (добавлено в 2011 году).

description: TComment работает как тумблер, т. е. он закомментирует текст, содержащий некомментированные строки, и раскомментирует уже закомментированный текст (т. е. текст, не содержащий некомментированных строк).

Если тип файла определен правильно,: TComment определит, какую строку комментария использовать, основываясь на значениях & commentstring или & comments. Для некоторых типов файлов определение комментария определено явно. Вы можете | tcomment # DefineType () | добавить свои собственные определения.

TComment знает, как работать со встроенным кодом другого типа файла, чем основной тип файла, например, области ruby ​​/ python / perl в сценариях vim, HTML или JavaScript в коде php и т. Д.

Как оператор (префикс может быть настроен через g: tcommentMapLeaderOp1 и g: tcommentMapLeaderOp2):

gc{motion}   :: Toggle comments (for small comments within one line 
                the &filetype_inline style will be used, if 
                defined) 
gcc          :: Toggle comment for the current line 
gC{motion}   :: Comment region 
gCc          :: Comment the current line 

Карты первичных ключей:

<c-_><c-_>   :: :TComment 
<c-_><space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END> 
<c-_>b       :: :TCommentBlock 
<c-_>a       :: :TCommentAs <QUERY COMMENT TYPE> 
<c-_>n       :: :TCommentAs &filetype <QUERY COUNT> 
<c-_>s       :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE> 
<c-_>i       :: :TCommentInline 
<c-_>r       :: :TCommentRight 
<c-_>p       :: Comment the current inner paragraph 

Существует также вторичный набор карт ключей с _ в качестве лидера (более предпочтительно на терминалах).

laebshade
источник
1

Существует изменения плагина, эта жизнь tpopeназываетсяvim-commentary

https://github.com/tpope/vim-commentary

Этот плагин обеспечивает :

  • вменяемость
  • Правильно отступленные комментарии
  • Не комментирует пустые / ненужные строки

Использование :

  • Установите через Vundle (или, я думаю, Pathogen).
  • Выделите текст и нажмите, :который будет отображаться как:<,'>
  • Введите Комментарий здесь :<,'>Commentaryи нажмите Enter.
  • Bom. Твой готовый бутон.
Уэстон Гангер
источник