web-dev-qa-db-ja.com

ファイルタイプごとにVimの空白設定を設定する

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

  • htmlおよびRubyをコーディングするときに2つのスペース
  • javaScriptをコーディングするときのタブ、tabwidth = 4を推奨

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

143
nelstrom

多くの方法がありますが、ここでは簡単で理解しやすい方法を紹介します。これらの行を~/.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
228
Peter

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

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

また注意してください:

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

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

filetype plugin onfiletype plugin indent onまたは.vimrcを含める必要があります。次に、プラグインを作成します。 Ruby ~/.vim/ftplugin/Ruby.vimを作成できます。技術的には、ここで好きなコマンドを使用して、Rubyファイルがロードされたときに実行できますが、推奨されるものには、setlocalmap <buffer>command -buffer、および定義関数が含まれます。詳細については、ユーザーガイドに記載されています; vimのスクリプトに精通している場合は、:help 41.11、それ以外の場合は:help usr_40および:help usr_41を読み取ります。

33
hobbs

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

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

:autocmd BufReadPost * :DetectIndent 
10

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

:set expandtab

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

:set tabstop=2

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

0
bartoindahouse