在插入模式下按Enter键时,Vim会自动继续添加注释,这对我很有帮助。

我读到我需要从o中删除选项formatoptions,因此我将这一行放在我的vimrc文件的末尾:

set formatoptions-=o


但是它什么也没有改变,当我从vim的iside执行:set formatoptions时,它向我显示了我的formatoptions是croql

我如何摆脱'o'?

编辑:

我已经按照Sato Katsura的评论中指出的步骤进行操作:


解决方案从运行开始:verb set fo查看formatoptions的最后修改位置。


这是verb set fo的输出:

  formatoptions=croql
        Last set from /usr/share/vim/vim73/ftplugin/vim.vim


评论

可能如何复制vim以停止在新行前添加注释?

@DJMcMayhem那不能解决我的问题。如您所见,我采用了该问题的答案推荐的方法,并且vim的行为没有改变。

是的,我明白了。我的投票太仓促,所以我现在退缩了。但是,现在您的.vimrc听起来像是个问题,因此在您发布它之前,我们完全无法提供帮助。我猜测插件会对其进行更改,或者它的来源不正确。

基本上,问题是“为什么我的vimrc中的行不设置formatoptions- = o?”,当按巧合时,这会禁用注释:-)

@Carpetsmoker是的,需要编辑吗?

#1 楼

vim启动时,它将运行$VIMRUNTIME/ftdetect.vim来查找您正在编辑的文件类型。然后,如果设置了'ftplugin',则它会获取$VIMRUNTIME/ftplugin.vim,而$VIMRUNTIME/ftplugin/&filetype.vim会来自q4​​312079q(有关详细信息,请参见:help startup)。

您可以更改或覆盖$VIMRUNTIME/ftplugin.vim$VIMRUNTIME/ftplugin/&filetype.vim。在您的主目录中创建一个名为.vim/after的文件夹和子文件夹。 )。有关其工作原理的正确说明,请参见$HOME/.vim/after/ftplugin.vim(和$HOME/.vim/after/ftplugin/lua.vim)。

在文件中添加以下内容:通过运行lua可以查看它是否有效。您应该得到如下列表:

set formatoptions-=o


注意第11行和第12行。您的文件路径看起来会有所不同。

评论


这对某人可能会有所帮助。在我的情况下,我使用vim-plug和一些插件(我不知道哪个)更改了format选项,但是我的.vim / after是在这些插件之后提供的...

–WW00WW
19 Mar 30 '19在8:43

我认为正确的命令是:scriptnames。

–贾里(Jari Turkia)
19年5月5日在5:39

通过反复试验,我了解到尝试在〜/ .vim / after / ftplugins.vim中强制使用formatoptions无效-然后我遇到了这种说法,这种解释可以解释原因。

–稳定狗
19年11月7日在14:58

#2 楼

我发现可以使用自动命令提供临时解决方案。

.vimrc文件中的以下行应将新的formatoptions应用于所有地方:

autocmd FileType * set formatoptions-=o


但是,这并不能真正解决问题;我仍然不明白为什么简单的set不够用,正如评论中指出的那样,该解决方案并不理想。

评论


这可能有效,但是非常笨拙,不是我建议的解决方案。

–詹姆斯
16年8月26日在22:14

@DJMcMayhem嗯,使用此解决方案可能会遇到什么问题?请随时发布一个提供更好解决方案的答案,我显然更喜欢它:)

–theonlygusti
16-8-26在22:15



为什么不@DJMcMayhem?问题几乎可以肯定是因为其中一种文件类型设置了格式选项(例如,Perl,Ruby和其他几种设置了该选项)。这似乎是可以接受的解决方案?

–马丁·图尔诺伊(Martin Tournoij)
16年8月26日在22:17

@Carpetsmoker我想这很公平。我没想到。在autocmd中更改设置,而不是直接设置,似乎很奇怪。

–詹姆斯
16年8月26日在22:18

我猜@SatoKatsura取决于您想要什么。某些人可能不喜欢在使用o时无论文件类型如何都不要添加注释字符,在这种情况下,这似乎很合适。

–马丁·图尔诺伊(Martin Tournoij)
16年8月27日在18:12

#3 楼

我有和OP类似的经历。

我发现t已添加到我的formatoptions中,尽管有意尝试将其禁用。

在使用:verbose set fo确认它来自.vimrc之后,我注意到其行为似乎取决于我在.vimrc文件中放置formatoptions的位置。我发现这是由于将set nocompatible放在文件中的位置而发生的:
set formatoptions=qj
set nocompatible

:set fo?
  formatoptions=tcq


遵循了这个好的建议后,我的:help nocompatible便按照需要保存了。我不知道OP是否正在遇到这个确切的问题,或者是否是其他某种交互作用,但是我很高兴找出导致它的原因。希望这可以帮助其他人弄清楚是什么(最初是莫名其妙地)更改了他们的设置。

我也喜欢theonlygusti的autocmd-无论文件类型如何,我都不想设置一些选项。我在看你formatoptions

#4 楼

既然我们很多Vim用户都在遭受这个痛苦,所以我去研究了更多。给定$HOME/.vim/after/ftplugin.vim给出的列表,该文件还为时过早。但是,为LUA文件创建:scriptnames的第二条建议确实有所帮助。

通过$HOME/.vim/after/ftplugin/lua.vim,我了解到文件类型的通用后置插件在特定于文件类型和特定于文件类型之前被获取after-plugin在文件类型之后获取。不是很直观,但这就是它的工作方式。

我的博客中有关于此的更多信息。

评论


我不确定为什么您认为after / ftplugin会有所帮助。更好的方法是使用特定于文件类型的替代(使用FileType自动命令或特定的after / .vim文件)。另请参见:h ftplugin-overrule的帮助

–克里斯蒂安·布拉班特(Christian Brabandt)
19年6月6日在7:15

我认为这会有所帮助,因为@ abcq2在上面的回答中建议了它。我想我在回答中使用after / .vim。

–贾里(Jari Turkia)
19年6月6日19:32

#5 楼

我使用vim(如此处所述)查看strace尝试加载的文件/路径,然后创建了~/.vim/after/plugin/目录(这是vim尝试加载的最后一个配置位置),然后将我的~/.vimrc链接到该位置: br />
mkdir -p ~/.vim/after/plugin/
ln -s ~/.vimrc ~/.vim/after/plugin/ 


我对strace所做的操作:

基本上,我跑了: /> ...然后立即退出vim:q!)。接下来,我加载~/vim_strace$ vim ~/vim_strace)并结束(:$)。然后,我开始从底部阅读以openat(AT_FDCWD, "/home/karl/.....开头的行。

我首先看到的是:

strace -o ~/vim_strace vim


但是那不是我想要的配置选项的地方。在.viminfo线正上方的下一行是:好像是赢家。所以,这就是我选择的那个。

现在,可以正常工作了。

希望对某人有所帮助。

评论


抱歉,但是我看不到这是如何解决这个问题的。您能否澄清并解释为什么这将解决formatoptions问题?

–filbranden♦
20-4-27的11:19

因为它实际上使vim遵守.vimrc文件中的选项。请重新阅读并确保您理解问题和我的答案。

–卡尔·威尔伯(Karl Wilbur)
20-04-27在19:08

1)您(整个)vimrc不应真正在插件上下文中运行。 2)像添加单行〜/ .vim / after / plugin / formatoptions.vim并设置fo- = o这样的事情更可口...但是当文件类型插件将其覆盖时,这仍然行不通。例如,打开Vim(没有文件或不相关的文件),然后使用:e打开或创建* .vim文件。您将看到formatoptions再次包含o,因为ftplugin / vim.vim是为该缓冲区设置的,因此after / plugin文件将无法覆盖它。

–filbranden♦
20-04-27在19:14

无论如何...关于您要在此处完成的工作,您的答案并不完全清楚。我可以看到(现在?)您正在尝试在所有插件之后的启动过程中最后加载vimrc。您的答案并没有真正说明这一点,如果您先从解释开始……那将对您有帮助...此外,尽管strace很不错,但回答“哪个目录是最后一个”非常简单,只需查看:set rtp?您会看到〜/ .vim / after是最后一个。但是,如前所述,这实际上并没有用,因为fo将由ft插件重置,这确实是这里的问题。

–filbranden♦
20-04-27在19:19

它绝对可以,而且绝对可以。升级到Ubuntu 20.04后,我遇到了与OP完全相同的问题。我的解决方案“修复”了它,因为它在加载其他插件之后加载了我的〜/ .vimrc,从而使我的〜/ .vimrc可以按预期覆盖默认值。

–卡尔·威尔伯(Karl Wilbur)
20-4-27在19:22