autocmd 未从 ~/.vimrc 应用

autocmd not applied from ~/.vimrc

如何让我的 vim 在不手动重新加载 ~/.vimrc 的情况下应用自动命令?为什么 ... Filetype tsv ... 根本没有应用?

我的~/.vimrc

set ts=10
autocmd BufWrite * :echom "Writing buffer!"
autocmd Filetype tsv set ts=20 sts=20 sw=20

~/.vimrc 已加载,但仅在 :so:

之后才应用 autocmd
$ vim /tmp/test.tsv
:verbose set ts
  tabstop=10
    Last set by ~/.vimrc
:w
"test.tsv" 2L, 37C written
:so ~/.vimrc
:w
Writing buffer!
"test.tsv" 2L, 37C written

此外,为什么即使我编辑了 .tsv 文件,制表位也没有设置为 20?

vim --version: VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jul 11 2015 08:43:46)

:scriptnames:

  1: /etc/vimrc
  2: /usr/share/vim/vimfiles/archlinux.vim
  3: ~/.vimrc
  4: ~/.vim/plugin/InsertXSDDateTimeLiteral.vim
  5: ~/.vim/plugin/RdfNamespaceComplete.vim
  6: /usr/share/vim/vimfiles/plugin/SyntaxFolds.vim
  7: /usr/share/vim/vimfiles/plugin/filebrowser.vim
  8: /usr/share/vim/vimfiles/plugin/imaps.vim
  9: /usr/share/vim/vimfiles/plugin/libList.vim
 10: /usr/share/vim/vimfiles/plugin/remoteOpen.vim
 11: /usr/share/vim/vim74/plugin/getscriptPlugin.vim
 12: /usr/share/vim/vim74/plugin/gzip.vim
 13: /usr/share/vim/vim74/plugin/logiPat.vim
 14: /usr/share/vim/vim74/plugin/matchparen.vim
 15: /usr/share/vim/vim74/plugin/netrwPlugin.vim
 16: /usr/share/vim/vim74/plugin/rrhelper.vim
 17: /usr/share/vim/vim74/plugin/spellfile.vim
 18: /usr/share/vim/vim74/plugin/tarPlugin.vim
 19: /usr/share/vim/vim74/plugin/tohtml.vim
 20: /usr/share/vim/vim74/plugin/vimballPlugin.vim
 21: /usr/share/vim/vim74/plugin/zipPlugin.vim

对于文件类型问题,可能是因为vim不知道"tsv"文件类型:你可以通过运行 :set filetype检查一下return 你当前的文件类型。 (它 returns "" 在 *.tsv 文件上对我来说)

以下内容适用于所有 *.tsv 文件

autocmd BufEnter *.tsv set ts=20 sts=20 sw=20

另一个问题,它一定是你的插件之一或你的 .vimrc 中的其他东西覆盖了它(因为它只适用于 vimrc 中的那三行)。尝试通过 运行 :autocmd 找到罪魁祸首,它将列出所有已注册的自动命令