如何获得vim停止在新行前添加评论?


50

我正在编辑.vimrc文件,并添加了评论。当我有这样的评论时:

" example comment

完成注释后,在行末按回车,下一行将自动设置为注释(引号会自动插入):

" example comment
" 

如何停止这种行为?

Answers:


66

通过formatoptions设置来控制。来自:help fo-table

您可以使用该'formatoptions'选项来影响Vim格式化文本的方式。 'formatoptions'是可以包含以下任何字母的字符串。默认设置为tcq。您可以使用逗号分隔选项字母,以提高可读性。

请注意,有关“默认值”的陈述在某种程度上具有误导性,因为许多文件类型都会更改格式选项以最适合该文件类型。例如/usr/share/vim/vim74/ftplugin/vim.vim

" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
setlocal fo-=t fo+=croql

您可以通过以下方式查看当前formatoptions

:set fo?
  formatoptions=jcroql

并查看它们的设置方式:

:verbose set fo?
  formatoptions=jcroql
      Last set from /usr/share/vim/vim74/ftplugin/vim.vim

在这种情况下,您要删除r标志,但也可能要删除co标志:

r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.

可以这样完成:

:set formatoptions-=r formatoptions-=c formatoptions-=o

请注意,使用:set formatoptions-=cro不会按预期方式工作(因为它是一个字符串,所以它将cro按该顺序查找string ,但通常不起作用。)。

仅对当前缓冲区设置更改,请使用:setlocal代替:set。如果您希望始终拥有这些选项,则最好autocmd在vimrc中使用;例如:

au FileType vim setlocal fo-=c fo-=r fo-=o

这将为'vim'文件类型设置选项,而不会干扰其他文件类型。

如果要始终设置它,请使用:

au FileType * set fo-=c fo-=r fo-=o

set fo-=cro由于许多文件类型都已设置/扩展,因此仅使用就行不通formatoption(如上所示);加载文件类型文件后,将执行FileType autocmd 。


1
已确认。另外,它的答案在这里:stackoverflow.com/questions/16030639/vim-formatoptions-or
Melon

1
添加au FileType * set fo-=o到我的.vimrc无效。我按o了评论行,但它也仍然评论。
Ixx

很久以来,这一直困扰着我。默认formatoptions是包装我的txt文件。我正在打转头textwidthwrapmargin但没有任何效果。甚至将我的vim从8.1降级到8.0并认为这是一个错误。这解决了我的问题,谢谢。
anishjp

1

将此添加到您的vimrc中:

au BufEnter * set fo-=c fo-=r fo-=o

FileType由于其他插件已设置,因此无法使用formatoption

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.