Vim:`set formatoptions`丢失了?

时间:2011-05-20 19:12:36

标签: vim

我的set formatoptions=cqn中有vimrc,但由于某种原因,它不会坚持。似乎Vim在某个时刻恢复到默认值(fo=tcq)但我无法弄清楚原因。正在运行-V100/tmp/log只会给我:

formatoptions=tcq
  Last set from ~/.vimrc

没有有用的背景。

那么,有没有办法让formatoptions坚持下去?或者我只需要创建一个autocmd来在每次加载新文件时重置它?

修改

使用:verbose set formatoptions显示了这一点:

formatoptions=tcq
  Last set from ~/.vimrc

但是,〜/ .vimrc中对foformatoptions的唯一引用是set formatoptions+=cqn

5 个答案:

答案 0 :(得分:14)

此行为是因为VIM中的C文件插件。由于在加载.vimrc后加载了文件插件,因此.vimrc中的设置将被覆盖 David Wolever给出的解决方案似乎是最好的选择 在.vimrc中添加以下行:

  

autocmd BufNewFile,BufRead * setlocal formatoptions+=cqn

...而不是正常的set formatoptions命令。

答案 1 :(得分:5)

我也遇到了这个问题。我有项目特定的配置,如

autocmd BufRead,BufNewFile project/*.c setlocal formatoptions-=cro

但是,set fo?显示formatoptions=croql。事实证明,我需要BufWinEnter而不是BufRead

  

在窗口中显示缓冲区后。这个   可以在加载缓冲区时(之后   处理模型)或隐藏时   缓冲区显示在窗口中(并且没有   更长的隐藏)。   不会发生:拆分没有   参数,因为你继续编辑相同的   缓冲区,或":split"用一个已经存档的文件   在窗口中打开,因为它重新使用了一个   现有缓冲区。但它确实发生了   ":分流"使用当前缓冲区的名称,   因为它重新加载了缓冲区。

所以这是有效的

autocmd BufWinEnter,BufNewFile project/*.c setlocal formatoptions-=cro

答案 2 :(得分:4)

我听起来像是来自.vimrc的一些文件,或者插件正在改变这个值。

试图找出它的东西是

启动vim而不采购任何东西,请使用

vim -u NONE

使用NORC skipps .vimrc但加载插件

检查:help --noplugin以了解控制采购的各种启动选项。

--noplugin      Skip loading plugins.  Resets the 'loadplugins' option.
                {not in Vi}
                Note that the |-u| argument may also disable loading plugins:
                        argument        load vimrc files        load plugins ~
                        (nothing)               yes                 yes
                        -u NONE                 no                  no
                        -u NORC                 no                  yes
                        --noplugin              yes                 no

也许这也可能有用(来自help: :set):

When 'verbose' is non-zero, displaying an option value will also tell where it
was last set.  Example: >
        :verbose set shiftwidth cindent?
<         shiftwidth=4 ~
                  Last set from modeline ~
          cindent ~
                  Last set from /usr/local/share/vim/vim60/ftplugin/c.vim ~

也许......: - )

修改

您使用的是compatible吗?来自help: formatoptions

    NOTE: This option is set to the Vi default value when 'compatible' is
    set and to the Vim default value when 'compatible' is reset.

答案 3 :(得分:4)

根据formatoptions上的vim文档:

  

注意:此选项设置为Vi   'compatible'为
时的默认值   设置和Vim默认值时   'compatible'被重置。

因此,如果兼容的价值在变化的过程中发生变化,那可能会导致您遇到的问题。

答案 4 :(得分:0)

/usr/share/vim/vim74/ftplugin/vim.vim中找到:

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

删除它。然后完成所有事情。