繁体   English   中英

Vim不适用于.vimrc的某些设置

[英]Vim does not apply some settings from .vimrc

我的.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应用tabstop /语法?

: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'选项,当地当前的蟒蛇缓冲区,与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

您可能在这里提到了这个问题: https : //bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

解决方案是取消注释/etc/vim/vimrc的以下行(通过删除该行开头的" ):

let g:skip_defaults_vim = 1

对我而言,是set mouse=a强制在vim 8.0中set mouse=a Visual模式,而在vim 7.4中不是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM