2017-07-10 13 views
4

私の.vimrcには "set tabstop = 4"という文字列がありますが、例えばpythonファイルのようなものを開いたときは適用されません。ここに私のフルの.vimrcです:Qをによって:Q予想通り、しかし、もし.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作品は、彼が置き換えられ、このファイルを読み込んで言います私は例えば、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/syntaxを適用しないのですか? Pythonのバッファ内のコマンド:verbose set tabstop?の出力がある場合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 
+0

vi.stackexchange.com? – DevSolar

+0

@kamishコマンド ':scriptnames'の出力を投稿できますか?それを取得したい場合は、 ':redir'コマンドを使うことができます(':h:redir'を参照)。 – user852573

+0

@kamishまた、 ':verb set ts?'の出力は? – user852573

答えて

4

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

それはファイルタイプという意味の:verb set ts

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

出力の

出力プラグイン/usr/share/vim/vi80/ftplugin/python.vimはあなたのの値を設定しますオプションは現在の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 
+1

また、/usr/share/vim/vim80/ftplugin/python.vimは 'syntax'オプションをオーバーライドしていますので、私も彼を上書きしました** **動作します**。ありがとうございました! – kamish

+0

私はこのファイルでも値を強制しましたが、 'aide'ツールや侵入ツールはファイルが変更されたことを警告します...最終的には素晴らしい解決策ではありません。 – Yvan

1

あなたが持つかもしれませんここで参照される問題: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

解決方法は次のとおりです。 (行の先頭に"を取り除くことによって)/etc/vim/vimrcの行:私にとって

let g:skip_defaults_vim = 1

それはVIM 8.0でビジュアルモードを強制set mouse=aだった、とVIM 7.4ではありませんでした。

関連する問題