12

CentOS5にVim7(拡張)があり、通常のVimプラグイン/スクリプトがすべて付属しています。

$ find /usr/share/vim/vim70/ -name \*python\*
/usr/share/vim/vim70/syntax/python.vim
/usr/share/vim/vim70/ftplugin/python.vim
/usr/share/vim/vim70/indent/python.vim
/usr/share/vim/vim70/autoload/pythoncomplete.vim

.py()で終わるファイルを開くと、vim file.pyこれらのプラグインが自動的に読み込まれると思いますが、そうであるかどうかはわかりません。私が欲しいのは:

を押しTABて、4つのスペースを受け取ります。スイート、条件などの次の行を自動インデントします。

.vimrcファイルでtabstop、shiftwidthなどを明示的に設定することでこれを機能させています。これは上記のPythonファイルの目的ではありませんか?なぜこれらのものを自分の中に設定しなければならないの.vimrcですか?代わりにVimプラグインからこれらの機能を取得するにはどうすればよいですか?

現在の.vimrc:

syntax on
set hls
set expandtab
set textwidth=0
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set backspace=indent,eol,start
set incsearch
set ignorecase
set ruler
set wildmenu
set smarttab
filetype indent on
filetype on
filetype plugin on
4

2 に答える 2

5

私の理解では、Pythonファイルは複数の方法でインデントできるため、python.vimファイルは構文を強調するファイルにすぎない可能性があります。PEP8では4つのスペースが規定されていますが、タブの使用など、レガシーファイルは異なる場合があります。

従来のPythonファイルの中には、実際にはインデントごとに2つのスペースを使用するものがあります。そこで、PythonのインデントをVimに任せて、ファイルごとおよびファイルタイプごとに構成します。.vimrcの次の行は、私のxml、xhtml、およびhtml(2つのスペース)とは異なるPython固有の設定を示しています。

au FileType python setl shiftwidth=4 tabstop=4

レガシーファイルがある場合に便利なモードラインを使用して、ファイルごとに特定の設定を設定することもできます。

# vi: set tabstop=2 expandtab textwidth=70 filetype=python:
于 2010-01-06T16:04:47.737 に答える
2

vimrcでタブストップやシフト幅などを設定するのは正しいです。これらはグローバル設定を設定するだけでなく、ファイルタイプ固有のインデントサポートへのパラメーターとしても機能します。

言語インデントプラグインはこれらの設定を使用しますが、通常:he indeは言語に適したインデント式()も設定します。したがって、Pythonインデンターは、ブロック開始ステートメント(def、class、for ...)の後に自動的にインデントし、終了ステートメント(return、pass、continue ...)の後にデデントし、ts、sw、 ...設定しました。

プラグインがバッファ用にロードされているかどうかまだわからない場合は:filetype、検出、プラグイン、インデントの設定:set ft?を表示し、検出されたタイプを確認してください。

于 2010-01-06T08:54:16.487 に答える