ファイルの種類に基づいて Vim のインデント動作を変更する最も簡単な方法を誰かが簡単に説明してくれませんか? たとえば、Python ファイルを開く場合は 2 つのスペースでインデントする必要がありますが、Powershell スクリプトを開く場合は 4 つのスペースを使用する必要があります。
11 に答える
.vim
vimが特定のファイルタイプに切り替わるたびに実行されるファイルを追加できます。
たとえば、次の~/.vim/after/ftplugin/html.vim
内容のファイルがあります。
setlocal shiftwidth=2
setlocal tabstop=2
これにより、vimはインデントに2文字の幅のタブを使用します(このnoexpandtab
オプションは、私の構成の他の場所でグローバルに設定されています)。
これはここで説明されています:http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4、ファイルタイププラグインのセクションまでスクロールダウンします。
オプションを設定するには、ftpluginsまたは自動コマンドを使用します。
ftplugin
の~/.vim/ftplugin/python.vim:
setlocal shiftwidth=2 softtabstop=2 expandtab
そして、それらをオンにすることを忘れないでください~/.vimrc
:
filetype plugin indent on
(:h ftplugin
詳細については)
自動コマンド
で~/.vimrc
:
autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab
長いコマンドまたは設定を短いバージョンに置き換えることができ
autocmd
ますau
setlocal
:::::::setl
shiftwidth
sw
tabstop
ts
softtabstop
sts
expandtab
et
また、との違いを学ぶことをお勧めしtabstop
ますsofttabstop
。多くの人はについて知りませんsofttabstop
。
~/.vimrc のファイル サフィックスに基づいて autocmd コマンドを配置します。
autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile *.pl syntax on
あなたが探しているコマンドは、おそらく ts= と sw= です。
私は通常expandtab
セットで作業しますが、それはメイクファイルにとっては悪いことです。私は最近追加しました:
:autocmd FileType make set noexpandtab
私の.vimrcファイルの最後まで、それはMakefile、makefile、および* .mkをmakefileとして認識し、タブを展開しません。おそらく、これを拡張できます。
個人的には、.vimrc で次の設定を使用します。
autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
これは私たちのほとんどが知っているかもしれませんが、とにかく (私は初めて戸惑いました): :set et
( :set
expandtabs ) を実行しても、ファイルに既に存在するタブは変更されません:retab
。例えば:
:set et
:retab
ファイル内のタブは十分なスペースに置き換えられます。タブを元に戻すには、次のようにします。
:set noet
:retab
indent プラグインを使用するか、手動で設定を使用して Vim のインデントを適切に構成できますが、Python ファイルを開いたときに関連する設定を自動的に設定するVindectという Python スクリプトを使用することをお勧めします。このヒントを使用して、Vindect をさらに効果的に使用してください。他の人が作成したさまざまなインデント スタイル (タブとスペース、およびスペースの数) を使用して作成された Python ファイルを初めて編集し始めたときは、非常にイライラしました。しかし、Vindect はこのインデント ファイルとともに
また、お勧めします:
C で作成した というユーティリティを使用していますautotab
。ロードしたファイルの最初の数千行を分析し、Vim パラメータの値を決定shiftwidth
しtabstop
ますexpandtab
。
これは、たとえば、を使用してコンパイルされますgcc -O autotab.c -o autotab
。Vim との統合に関する説明は、上部のコメント ヘッダーにあります。
Autotab は非常に賢いですが、時々混乱することがあります。特に、さまざまなインデント スタイルを使用して一貫性を欠いて維持されているためです。
ファイルがインデントに明らかにタブ、またはタブとスペースの組み合わせを使用している場合、Autotab は、コメントなどの連続する行にまたがる内部要素の配置などの要因を考慮して、使用されているタブ サイズを判断します。
これはさまざまなプログラミング言語で機能し、明らかな空白行は言うまでもなく、C プリプロセス ディレクティブ、C ステートメント ラベルなど、インデントの増分に従わない「帯域外」要素を許容します。