Автокомментировать новую строку в 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://
должен решить проблему.