Vim中如何仅对块注释自动换行注释

16

.{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
3个回答

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

在你的vimrc文件中加入下面这句话可以让你在{cpp,h}文件中使用//注释而不影响块注释。

如果想临时使用这个功能,可以在当前缓冲区尝试使用:

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

4
comments+=f:// 的作用是什么? - Brian McCutchon

6
这种与特定文件类型相关的配置通常是通过文件类型插件进行设置的。Vim 带有许多常见文件类型的文件类型插件(比如.cpp)。您可以使用: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选项是一个由{标志}:{字符串}组成的列表,其中标志fO避免扩展注释换行符。

来自 Vim常见问题解答

  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's 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://

应该解决这个问题。

0
您可以使用在FileType事件上触发的自动命令:
  au Filetype * set formatoptions=xyz

这应该至少在你的vimrc中的"filetype on"之后。最好将其放在你的"myfiletypefile"文件中,这样它总是最后一个。

如果你想要覆盖特定文件类型的设置,那么创建一个与原始文件类型插件同名的文件,并将其放置在~/.vim/after/ftplugin目录中。例如,要覆盖c.vim文件类型插件中的设置,请在~/.vim/after/ftplugin目录中创建一个c.vim文件,并在此文件中添加你的首选项。 因此,请创建文件~/.vim/after/ftplugin/c.vim,其中包含

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接