ファイルタイプによるVim空白の設定


155

私の仕事では、インデントのハウススタイルに従う必要があります。

  • htmlとrubyをコーディングするときは2つのスペース
  • JavaScriptをコーディングするときのタブ、tabwidth = 4を推奨

ファイルタイプごとに異なる空白の設定を指定する最良の方法は何ですか?



これらすべての答えは私をより混乱させました。問題は、オプションが優先されることです。受け入れられた答えは素晴らしい構文ですが。これは優れたガイドでした:vimcasts.org/transcripts/2/en
MikaelLindlöf

回答:


245

多くの方法がありますが、ここではシンプルで理解しやすい方法を示します。これらの行をあなたに追加してください~/.vimrc

autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4

27
ts = 'ファイル内の<Tab>が使用するスペースの数' sts = '編集中に<Tab>が使用するスペースの数' sw = '詳細については、(自動)インデントステップに使用するスペースの数' vimdoc.sourceforge .net / htmldoc / quickref.html#option-list
zdsbs 2014年

少なくともルビーについては、expandtabを追加する必要がありました。ここで 'too much php'による回答を参照してください
Michael Durrant

87

ピーターの答えは十分簡単ですが、残念ながら選択肢は正しくありません。代わりに次のオプションを使用する必要があります。

autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab

また注意してください:

  • を使用して、vimにタブ文字を表示させることができます:set list
  • タブ/スペースのオプションを正しく設定したら、:retab!コマンドを使用してvimでファイルを修復できます(スペースをタブで置き換える、またはその逆)。

2
expandtab以上のメリットは何ですかsts=2
James McMahon

12
@JamesMcMahon expandtabは、すべてのタブをスペースに展開します。sts(softtabstop)は、インデント用のスペースとタブを挿入します。タブストップのサイズに基づいてインデントに収まるだけの数のタブを挿入し、その後にスペースを挿入します。もちろん、expandtabがオンの場合、挿入されるすべてのタブはスペースに変換されます。 stackoverflow.com/questions/1562336/…がさらに役立つ場合があります。タブを拡張しないと、ピーターの答えはスペースではなく2文字幅のタブを挿入します。
ajmccluskey 14

35

ピーターの答えに+1しますが、Vimは別のソリューションも提供します。setlocal一連のオプション、コマンド、マッピングをまとめて一度に設定するなど、1つよりも複雑なことを実行したい場合は、vimのファイルタイププラグイン機能が役に立ちます。

あなたは持っている必要がありますfiletype plugin onfiletype plugin indent onあなたに.vimrc、そしてあなたが作成することができます例えばルビーのためのプラグインを作成します~/.vim/ftplugin/ruby.vim。技術的にはあなたは、Rubyファイルがロードされたときに実行されるように、ここのように任意のコマンドを使用することができますが、推奨のものが含まれsetlocalmap <buffer>command -buffer、および関数を定義します。詳細については、ユーザーガイドをご覧ください。スクリプトvimにかなり慣れている場合は、にジャンプします。:help 41.11それ以外の場合は:help usr_40、とを読んでください:help usr_41


10

素敵なvimスクリプトもあります:DetectIndentは、開いたファイルのインデントを検出しようとします。コーディングスタイルが異なる多数のファイルを操作する場合に非常に便利です。

私は.vimrcでオートコマンドを使用しています

:autocmd BufReadPost * :DetectIndent 

0

タブキーが押されるたびにスペース文字を挿入するには、 'expandtab'オプションを設定します。

:set expandtab

次のステップは、タブキーが押されたときに挿入される空白文字の数を制御することです。'tabstop 'オプションを設定します。たとえば、タブに2つのスペースを挿入するには、次を使用します。

:set tabstop=2

参照:http : //vim.wikia.com/wiki/Converting_tabs_to_spaces

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.