防止(g)vim自动缩进注释

16

不久之前,我必须放置

filetype plugin on

我在使用的插件的.vimrc文件中加入了以下设置。

但是这导致了自动缩进的变化:每当我写一个注释“//”,然后按回车,vim自动缩进会在下一行自动输入另一个“//”。

// This is a comment. <ENTER>
// <-- vim automatically puts '// ' there

我该怎么做才能避免这种情况? 我在我的vim文件中使用了自动缩进设置。 我已经尝试过

filetype plugin indent off

但是它没有起作用。

3个回答

20

我回答你的标题而不是问题的主体,因为你的标题会吸引那些想要停止Vim缩进注释的人来到这个页面。

控制Vim是否自动缩进新字符的变量是indentkeys。我注意到在Python和Yaml中仅存在错误的缩进,因此我仅关闭了以“#”字符开头的行的自动缩进::set indentkeys-=0#

由于加载文件类型的缩进插件会覆盖您所做的任何.vimrc设置,因此您可以设置一个autocmd在文件创建或加载后更改indentkeys。这是我的设置:

autocmd BufNewFile,BufReadPost * if &filetype == "python" | set indentkeys-=0# | endif
autocmd BufNewFile,BufReadPost * if &filetype == "yaml" | set expandtab shiftwidth=2 indentkeys-=0# | endif

查看:h indentkeys

请注意,由于可能存在的错误,如果您使用Neovim,则还必须指定filetype plugin indent on,否则文件类型将不会设置。


1
谢谢您添加这个答案。标题引导我来到这里,并且它适用于我的vim版本。 - Doug

10

请查看:h formatoptions:h fo-table。您需要关闭的选项是ro。关闭它们可以防止vim在插入模式下按Enter或在普通模式下按oO时自动插入注释符(在本例中为"//")。


3
实际上,“set formatoptions=-or”并没有起作用,尽管文档上是这么说的。现在我正在使用“set formatoptions=tnq”。感谢您提供有用的信息。参考网址:https://dev59.com/MW025IYBdhLWcg3wUEWP。 - knub
2
@knub set formatoptions-=o | set formatoptions-=r 是用于移除选项的语法。只有当它们在选项字符串中连续出现为 "ro" 时,set formatoptions-=ro 才能起作用。 - piojo

6

请参考:help 'formatoptions' - 我知道这很烦人!

尝试以下操作:

:set fo-=or

1
我实际上很喜欢这个功能。偶尔我不得不再次寻找这个设置来打开它。 :-) - Michael Kristofik

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