Автокомментировать новую строку в Vim только для комментариев блока

Когда я начинаю новую строку в конце однострочного комментария в файле .{cpp,h}, vim автоматически комментирует его. Например:

// This is a comment<CR>
// | <- Cursor is moved to `|`, `//` is automatically inserted. 

Я не уверен, что это плагин или настройка. Я не вижу ничего похожего на это в моем ~/.vimrc, а загруженные плагины перечислены ниже.

Мне нравится это для /* */ -строчных многострочных комментариев, но я не хочу, чтобы мои однострочные комментарии выполнялись по нескольким строкам по умолчанию.

Какой параметр (или плагин) делает это, и могу ли я отключить его только для этого типа комментариев?

:scriptnames дает следующее:


  1: /Users/simont/.vimrc
  2: /usr/local/share/vim/vim73/syntax/syntax.vim
  3: /usr/local/share/vim/vim73/syntax/synload.vim
  4: /usr/local/share/vim/vim73/syntax/syncolor.vim
  5: /usr/local/share/vim/vim73/filetype.vim
  6: /usr/local/share/vim/vim73/ftplugin.vim
  7: /usr/local/share/vim/vim73/syntax/nosyntax.vim
  8: /Users/simont/repositories/config-files/vim/colors/solarized.vim
  9: /usr/local/share/vim/vim73/plugin/getscriptPlugin.vim
 10: /usr/local/share/vim/vim73/plugin/gzip.vim
 11: /usr/local/share/vim/vim73/plugin/matchparen.vim
 12: /usr/local/share/vim/vim73/plugin/netrwPlugin.vim
 13: /usr/local/share/vim/vim73/plugin/rrhelper.vim
 14: /usr/local/share/vim/vim73/plugin/spellfile.vim
 15: /usr/local/share/vim/vim73/plugin/tarPlugin.vim
 16: /usr/local/share/vim/vim73/plugin/tohtml.vim
 17: /usr/local/share/vim/vim73/plugin/vimballPlugin.vim
 18: /usr/local/share/vim/vim73/plugin/zipPlugin.vim
 19: /usr/local/share/vim/vim73/scripts.vim
 20: /usr/local/share/vim/vim73/ftplugin/vim.vim
 21: /usr/local/share/vim/vim73/syntax/vim.vim

Ответы

Ответ 1

au FileType c,cpp setlocal comments-=:// comments+=f://

В вашем vimrc должен сделать трюк для //, не затрагивая комментарии блока, в файлах {cpp, h}.

Чтобы временно попробовать в текущем буфере использовать:

:setlocal comments-=:// comments+=f://

Ответ 2

Такая конфигурация, связанная с конкретными типами файлов, обычно устанавливается через плагин типа файла. Существует несколько типов файлов для общих типов файлов (например, .cpp), которые поставляются вместе с Vim. Вы можете проверить тип файла для буфера с помощью :set ft?.

Настройка для продолжения комментариев после запуска новой строки происходит из опции 'comments', как сказал pb2q. Для .{cpp,h} тип файла по умолчанию - 'cpp', а параметр 'comment' установлен в $VIMRUNTIME/ftplugin/c.vim, так как cpp.vim находится в том же каталоге. Из файла c.vim:

  " Set 'comments' to format dashed lists in comments.
  setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://

Опция comments - это список {flags}:{string}, а флаги f и O не позволяют расширять новые строки комментариев.

Из Vim FAQ:

  You can use an autocommand triggered on the FileType event:

      au Filetype * set formatoptions=xyz

  This should at least be after "filetype on" in your vimrc. Best is to put
  it in your "myfiletypefile" file, so that it always last.


  If you want to override a setting for a particular filetype, then create a
  file with the same name as the original filetype plugin in the
  ~/.vim/after/ftplugin directory For example, to override a setting in the
  c.vim filetype plugin, create a c.vim file in the ~/.vim/after/ftplugin
  directory and add your preferences in this file.

Итак, создайте файл ~/.vim/after/ftplugin/c.vim с помощью

  setlocal comments-=://
  setlocal comments+=fO://

должен решить проблему.