417

ファイルの種類に基づいて Vim のインデント動作を変更する最も簡単な方法を誰かが簡単に説明してくれませんか? たとえば、Python ファイルを開く場合は 2 つのスペースでインデントする必要がありますが、Powershell スクリプトを開く場合は 4 つのスペースを使用する必要があります。

4

11 に答える 11

330

.vimvimが特定のファイルタイプに切り替わるたびに実行されるファイルを追加できます。

たとえば、次の~/.vim/after/ftplugin/html.vim 内容のファイルがあります。

setlocal shiftwidth=2
setlocal tabstop=2

これにより、vimはインデントに2文字の幅のタブを使用します(このnoexpandtabオプションは、私の構成の他の場所でグローバルに設定されています)。

これはここで説明されています:http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4、ファイルタイププラグインのセクションまでスクロールダウンします。

于 2008-10-01T18:37:48.037 に答える
217

オプションを設定するには、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
shiftwidthsw
tabstopts
softtabstopsts
expandtabet

また、との違いを学ぶことをお勧めしtabstopますsofttabstop。多くの人はについて知りませんsofttabstop

于 2008-10-01T18:37:42.093 に答える
63

~/.vimrc のファイル サフィックスに基づいて autocmd コマンドを配置します。

autocmd BufRead,BufNewFile   *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile   *.pl syntax on

あなたが探しているコマンドは、おそらく ts= と sw= です。

于 2008-10-01T18:21:31.070 に答える
26

私は通常expandtabセットで作業しますが、それはメイクファイルにとっては悪いことです。私は最近追加しました:

:autocmd FileType make set noexpandtab

私の.vimrcファイルの最後まで、それはMakefile、makefile、および* .mkをmakefileとして認識し、タブを展開しません。おそらく、これを拡張できます。

于 2008-10-01T18:23:34.653 に答える
19

個人的には、.vimrc で次の設定を使用します。

autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab
于 2012-05-03T11:49:50.897 に答える
6

これは私たちのほとんどが知っているかもしれませんが、とにかく (私は初めて戸惑いました): :set et( :setexpandtabs ) を実行しても、ファイルに既に存在するタブは変更されません:retab。例えば:

:set et
:retab

ファイル内のタブは十分なスペースに置き換えられます。タブを元に戻すには、次のようにします。

:set noet
:retab
于 2012-03-17T19:52:58.183 に答える
3

indent プラグインを使用するか、手動で設定を使用して Vim のインデントを適切に構成できますが、Python ファイルを開いたときに関連する設定を自動的に設定するVindectという Python スクリプトを使用することをお勧めします。このヒントを使用して、Vindect をさらに効果的に使用してください。他の人が作成したさまざまなインデント スタイル (タブとスペース、およびスペースの数) を使用して作成された Python ファイルを初めて編集し始めたときは、非常にイライラしました。しかし、Vindect はこのインデント ファイルとともに

また、お勧めします:

于 2009-05-14T20:50:48.487 に答える
1

C で作成した というユーティリティを使用していますautotab。ロードしたファイルの最初の数千行を分析し、Vim パラメータの値を決定shiftwidthtabstopますexpandtab

これは、たとえば、を使用してコンパイルされますgcc -O autotab.c -o autotab。Vim との統合に関する説明は、上部のコメント ヘッダーにあります。

Autotab は非常に賢いですが、時々混乱することがあります。特に、さまざまなインデント スタイルを使用して一貫性を欠いて維持されているためです。

ファイルがインデントに明らかにタブ、またはタブとスペースの組み合わせを使用している場合、Autotab は、コメントなどの連続する行にまたがる内部要素の配置などの要因を考慮して、使用されているタブ サイズを判断します。

これはさまざまなプログラミング言語で機能し、明らかな空白行は言うまでもなく、C プリプロセス ディレクティブ、C ステートメント ラベルなど、インデントの増分に従わない「帯域外」要素を許容します。

于 2015-12-05T02:22:17.153 に答える