回答:
.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で説明されています。ファイルタイププラグインのセクションまでスクロールします。
~/.vim/after/ftplugin/html.vim
代わりにそれを入れるべきです。しかし、他の人が以下で指摘しているように、単にに追加autocmd FileType html setlocal shiftwidth=2 tabstop=2
する方がはるかに優れています.vimrc
。
autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
)
filetype plugin on
もあなたのvimrc に追加する必要があります。
オプションを設定するには、ftpluginsまたはautocommandsを使用します。
に ~/.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
。
sw
以下のために短いsoftwidth
、sts
短いためであるsofttabstop
、et
短いためであるexpandtab
、setl
のために短いですsetlocal
、とau
の略ですautocmd
。短い形式の代わりに長い形式を使用できます。
sw
ように展開をshiftwidth
ではなくsoftwidth
。
を編集し、~/.vimrc
インデントごとに異なるファイルタイプを追加します。たとえばhtml/rb
、2つのスペースにはjs/coffee
インデント、4つのスペースにはファイルインデントが必要です。
" by default, the indent is 2 spaces.
set shiftwidth=2
set softtabstop=2
set tabstop=2
" for html/rb files, 2 spaces
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
" for js/coffee/jade files, 4 spaces
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab
"
:)
'
私のすべてのLinuxのvimでエラーになります。(7.3 +、8.0 ...)
"
、つまり別のシングルで閉じないようにしてい"
ます。なぜ私はそれをコメントしたのかわからない。
'
左ではなく"
右なし"
@。
〜/ .vimrcにファイルサフィックスに基づいてautocmdコマンドを配置します
autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile *.pl syntax on
あなたが探しているコマンドはおそらくts =とsw =です
FileType
ですか?
私は通常expandtab
setで作業しますが、makefileにとってそれは悪いことです。私は最近追加しました:
: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
今日、あなたはeditorconfigを試すことができます、それにvimプラグインもあります。これにより、vimでインデントのサイズを変更できるだけでなく、他の多くのエディターで一貫したコーディングスタイルを維持できます。
以下は、簡単なeditorconfigです。ご覧のとおり、pythonファイルにはインデント用のスペースが4つあり、pugテンプレートファイルには2つしかありません。
# 4 space indentation for python files
[*.py]
indent_style = space
indent_size = 4
# 2 space indentation for pug templates
[*.pug]
indent_size = 2
Vimのインデントは、インデントプラグインを使用して、または設定を使用して手動で設定できますが、Pythonファイルを開くと、関連する設定を自動的に設定するVindectと呼ばれるpythonスクリプトを使用することをお勧めします。このヒントを使用して、Vindectをさらに効果的に使用してください。さまざまなインデントスタイル(タブとスペース、スペースの数)を使用して他の人が作成したpythonファイルの編集を始めたとき、それは信じられないほどイライラさせられました。しかし、Vindectとこのインデントファイル
また、お勧めします:
を使用autocmd
する場合は、それらをグループ化することをお勧めします。グループ化がファイルタイプの検出に関連している場合は、次のようになる可能性があります。
augroup filetype_c
autocmd!
:autocmd FileType c setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab
:autocmd FileType c nnoremap <buffer> <localleader>c I/*<space><esc><s-a><space>*/<esc>
augroup end
グループ化.vimrc
は、ファイルタイプに複数のルールが関連付けられている場合に特に、整理された状態を維持するのに役立ちます。上記の例では、.cファイルに固有のコメントショートカットが定義されています。
への最初の呼び出しautocmd!
は、vimに、そのグループ内で以前に定義された自動コマンドを削除するように指示します。これにより、.vimrc
再度ソースが提供された場合に定義が重複するのを防ぎます。詳細については、:help augroup
を参照してください。
私はCで作成したユーティリティを使用しますautotab
。それはあなたがロードするファイルの最初の数千行を分析し、Vimのパラメータの値を決定しshiftwidth
、tabstop
そしてexpandtab
。
これは、たとえばを使用してコンパイルされますgcc -O autotab.c -o autotab
。Vimと統合するための手順は、上部のコメントヘッダーにあります。
Autotabはかなり賢いですが、特にさまざまなインデントスタイルを使用して一貫性のない方法で維持されているため、時々混乱する可能性があります。
ファイルがタブ、またはタブとスペースの組み合わせをインデントに使用していることが明らかな場合、Autotabは、コメントなど、連続する行にまたがる内部要素の配置などの要素を考慮して、どのタブサイズが使用されているかを判断します。
これは、さまざまなプログラミング言語で機能し、インデントのインクリメントに従わない「帯域外」要素(Cプリプロセスディレクティブ、Cステートメントラベルなど)を許容します。