Vim 不应用 .vimrc 中的某些设置

标签 vim

我的 .vimrc 有一个字符串“set tabstop=4”,但是当我打开某些东西时它不适用,例如 python 文件。这是我的完整 .vimrc:

cnoremap Q q
au! BufWritePost .vimrc source %
set tabstop=4
set shiftwidth=4
set smarttab
set expandtab
set softtabstop=4
set autoindent
"set syntax=off
set t_co=256

strace 说vim 读取/home/user/.vimrc,他真的读取了这个文件,例如cnoremap工作,他按预期用 :q 替换 :Q ,但如果我,例如,取消注释 set syntax=off ,不适用。
另外,vim -V2接下来说:
...
считывание сценария "$HOME/.vimrc"
Поиск "syntax/off.vim syntax/off/*.vim" в "/home/user/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,/home/user/.vim/after"
not found in 'runtimepath': "syntax/off.vim syntax/off/*.vim"
...

当然,我想,这是有选择的。但如果我在编辑器中制作 :so $MYVIMRC ,他应用所有设置!

现在我使用 bash 别名 vim="vim -S ~/.vimrc",在详细模式下,他应用 .vimrc 没有错误并按预期工作,但这是奇怪的解决方案。

这里可能有什么问题?为什么 vim 不应用来自 .vimrc 的制表符/语法?
:verb set ts 的输出
tabstop=8
        В последний раз опция изменена в /usr/share/vim/vim80/ftplugin/python.vim

:scriptnames 的输出
1: /etc/vimrc
  2: /usr/share/vim/vim80/syntax/syntax.vim
  3: /usr/share/vim/vim80/syntax/synload.vim
  4: /usr/share/vim/vim80/syntax/syncolor.vim
  5: /usr/share/vim/vim80/filetype.vim
  6: /usr/share/vim/vimfiles/ftdetect/dockerfile.vim
  7: /usr/share/vim/vimfiles/ftdetect/nginx.vim
  8: /usr/share/vim/vimfiles/ftdetect/stp.vim
  9: /usr/share/vim/vim80/ftplugin.vim
 10: ~/.vimrc
 11: /usr/share/vim/vim80/plugin/getscriptPlugin.vim
 12: /usr/share/vim/vim80/plugin/gzip.vim
 13: /usr/share/vim/vim80/plugin/logiPat.vim
 14: /usr/share/vim/vim80/plugin/manpager.vim
 15: /usr/share/vim/vim80/plugin/matchparen.vim
 16: /usr/share/vim/vim80/plugin/netrwPlugin.vim
 17: /usr/share/vim/vim80/plugin/rrhelper.vim
 18: /usr/share/vim/vim80/plugin/spellfile.vim
 19: /usr/share/vim/vim80/plugin/tarPlugin.vim
 20: /usr/share/vim/vim80/plugin/tohtml.vim
 21: /usr/share/vim/vim80/plugin/vimballPlugin.vim
 22: /usr/share/vim/vim80/plugin/zipPlugin.vim
 23: /usr/share/vim/vim80/syntax/python.vim
 24: /usr/share/vim/vim80/ftplugin/python.vim

最佳答案

如果命令的输出:verbose set tabstop?在 python 缓冲区中是:

tabstop=8
        В последний раз опция изменена в /usr/share/vim/vim80/ftplugin/python.vim

这意味着文件类型插件 /usr/share/vim/vi80/ftplugin/python.vim设置您的 'tabstop' 的值选项,当前 python 缓冲区的本地选项,带有 8当你想要时 4 .

您的设置 set tabstop=4在 python 缓冲区中不起作用,因为本地值优先于全局值。

如果你想覆盖它,你可以创建文件 ~/.vim/after/ftplugin/python.vim并在里面写:
setlocal tabstop=4

或者您可以在 vimrc 中添加以下 autocmd :
augroup my_python_settings
    autocmd!
    autocmd FileType python setlocal tabstop=4
augroup END

关于Vim 不应用 .vimrc 中的某些设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45010428/

相关文章:

vim - Javascript Lint 声称额外的分号不好(在 `if` 之后)

vim - 如何防止点击 "dd"删除当前的yank?

vim - 使用大写 Q 也可以退出 Vim

vim - 试图映射 | (管道)键

vim - 如何编写VIM配色方案?

更改颜色方案后 Vim 多个光标不可见

git - Vim:Fugitive:Glog - 如何获取当前文件的提交而不是修订

vim - 如何在 Vim 中为 CUDA .cu 和 .cuh 文件启用语法高亮?

php - Vim:字符串中的 Javascript 语法

bash - 如何防止 vim bash 命令使用全屏?