0

私はpythonファイルを編集しています。タブストップの現在の設定は次のとおりです(実験的なものです):

  • ~/.vimrc:set tabstop=4
  • ~/.vim/ftplugin/python.vim:set tabstop=2
  • ~/.vim/after/plugin/python.vim ファイルはありません

set tabstop?ショーtabstop=8

verbose set tabstop?を示していますtabstop=8。からの最後のセット/usr/share/vim/vim80/ftplugin/python.vim

私の質問:

  • ファイル内またはファイル内にtabstop明示的に設定しているのに、設定が 8 になっているのはなぜですか4.vimrc2~/.vim/ftplugin/python.vim
  • 、、、~/.vimrcなどの各ファイルはいつロードされますか?~/.vim/ftplugin/python.vim~/.vim/after/plugin/python.vim/usr/share/vim/vim80/ftplugin/python.vim
  • どのファイルが優先され、他の設定を上書きするにはどこで設定を定義すればよいですか?
  • とどうset違うのset local

誰かがこれらすべての質問に答えてくれたら最高です。これらの概念はすべて相互に関連しているため、特に Vim の初心者および中級者のユーザーに役立つことは間違いありません。

4

2 に答える 2

1
  1. tabstopバッファローカル設定です。つまり、すべてのバッファには独自の値があります。したがって、あなたから設定することで、vimrcおそらく上書きされるグローバルデフォルトのみを設定しますftplugin

  2. プラグインのコードは$VIMRUNTIME/ftplugin.vim. 大まかに言えば、それが行うことはruntime! ftplugin/python.vim. runtime!とは次の 2 つの点で異なります。(a)現在のディレクトリではなく、にsource沿って検索します。:h 'runtimepath'(b)最初のファイルだけでなく、見つかったすべてのファイルをソースします(これが「バン」の略です)。

したがって、(b) のために、ftplugin最初に をソースし~/.vim/ftplugin/python.vim、次に をソースします$VIMRUNTIME/ftplugin/python.vim。このため、設定は最終的に上書きされます。

~/.vim/after/ftplugin/python.vimこれが、通常、代わりに必要な理由です。また、標準の「ftplugin」スクリプトには、複数のソースに対するガードがあることに注意してください。

if exists("b:did_ftplugin")
    finish
endif
let b:did_ftplugin = 1
....

したがって、本当に必要な場合は、これを上に置き、~/.vim/ftplugin/python.vimからすべてのものを除外できます$VIMRUNTIME/ftplugin/python.vim。めったに欲しくない。

  1. と の違いはset、実際setglobalsetlocalはオプションの種類 (グローバル、ローカルからバッファ、ローカルからウィンドウ、グローバルとローカル) の違いです。物事を単純にするsetglobalために、オプションにグローバル値をsetlocal設定し、ローカル値を設定して、set何か「合理的な」(tm) ことを行います。特に、set tabstop=xグローバル値とローカル (現在のバッファーのもの) の両方の値を設定します。
于 2020-08-03T10:25:17.447 に答える