タブサイズを4から2に変更することにしました。なぜですか。コードを確認したい人なら誰でも確実にその設定を使用できます。
ただし、質問。
タブキーを押すと2が挿入されますが、Vimの自動インデントはまだ4を入れています。その2にするために何を変更すればよいですか?
もう1つの無関係な質問:Cおよび類似の言語に最適なインデントスタイルはどれですか。私は1TBSを使用していますが、たくさんの選択肢があります。それらのいずれかがより専門的または好ましいですか?
タブサイズを4から2に変更することにしました。なぜですか。コードを確認したい人なら誰でも確実にその設定を使用できます。
ただし、質問。
タブキーを押すと2が挿入されますが、Vimの自動インデントはまだ4を入れています。その2にするために何を変更すればよいですか?
もう1つの無関係な質問:Cおよび類似の言語に最適なインデントスタイルはどれですか。私は1TBSを使用していますが、たくさんの選択肢があります。それらのいずれかがより専門的または好ましいですか?
回答:
「shiftwidth
」を「」と同じ値に設定してみてくださいtabstop
。さらに良いことに、Vimの最新バージョンを使用している場合は、「shiftwidth
」を0に設定すると、デフォルトで「tabstop
」に設定されているものに設定されます。
Vimは主にインデントサイズについて3つの設定を使用します。
tabstop
、ts
:Vimが開いているファイルで表を検出すると、タブを{ts}スペースとして表示します(tabstopのヘルプを参照するか:help tabstop
、Vimに入力してください)。softtabstop
、sts
:ファイルを編集してタブキーを押すと、Vimはこの設定を使用して、挿入される表の幅を定義します(softtabstopのヘルプを参照するか:help softtabstop
、Vimに入力します)。shiftwidth
、sw
:スペースVimの使用回数のいずれか、インデントオートインデントのものや、通常使用して>>
、<<
コマンドを。Heptiteが気づいたように、これはこの特定のケースで探していたものです。そして、Vimの最近のバージョンでは、実際にこのオプションを定義せずに、で定義shiftwidth
された値を取りますtabstop
。かなり便利です(shiftwidthのヘルプを参照してください)。たとえば、次の設定を使用する場合:
set sts=4
set ts=2
set sw=8
これらは次の動作を生成します:
tabstop
2に設定されている、これは実際には2件の集計のと同等になります。これはかなり簡単にチェックできます。list
とlistchars
オプションを使用して、表を表示します。>>
インデントすると、インデントは8スペース幅になります(したがって、tabstop
上記のように、値に基づいて4つの表に相当します)。tabstop
ヘルプから(:help tabstop
Vimで):
There are four main ways to use tabs in Vim:
1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
(or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim
will use a mix of tabs and spaces, but typing <Tab> and <BS> will
behave like a tab appears every 4 (or 3) characters.
2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
'expandtab'. This way you will always insert spaces. The
formatting will never be messed up when 'tabstop' is changed.
3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
|modeline| to set these values when editing the file again. Only
works when using Vim to edit the file.
4. Always set 'tabstop' and 'shiftwidth' to the same value, and
'noexpandtab'. This should then work (for initial indents only)
for any tabstop setting that people use. It might be nice to have
tabs after the first non-blank inserted as spaces if you do this
though. Otherwise aligned comments will be wrong when 'tabstop' is
changed.
私は個人的に2つ目のソリューションを主に使用しています。
set ts=2
set sts=2
set et "expand tabs to spaces
http://vim.wikia.com/wiki/Indenting_source_codeによると、「filetype plugin indent on」コマンドを使用すると、プログラムはVimインストールのindentサブディレクトリにあるファイルタイプ固有のインデントスクリプトを使用します。このページには、CおよびC ++ファイルで 'cindent'が自動的に使用され、そのコマンドを手動で使用する必要がないことも記載されています。
私はVimに慣れていないため、たまに基本的なテキスト編集にしか使用していませんが、「cindent」コマンドを手動で発行して、Vimのデフォルトの自動インデントサイズを使用してみます。それがうまくいかない場合は、「filetype plugin indent on」を試して、スクリプトを自分で編集し、目的のインデントを取得できます。
ts
、2、4、または8の設定間の議論