タブのサイズを 4 から 2 に変更することにしました。理由はないからです。コードを見たい人は誰でも自分の設定をそのまま使用できます。
しかし、疑問が。
Tab キーを押すと 2 が挿入されますが、Vim の自動インデントでは依然として 4 が挿入されます。これを 2 にするには何を変更すればよいでしょうか?
関係のない質問ですが、C や類似の言語にはどのインデント スタイルが最適ですか? 私は 1TBS を使用していますが、選択肢がたくさんあります。よりプロフェッショナルなものや好まれるものはありますか?
答え1
shiftwidth
' ' を ' ' と同じ値に設定してみてくださいtabstop
。さらに良い方法として、Vim の最新バージョンを使用している場合は、' shiftwidth
' を 0 に設定すると、' ' に設定されている値がデフォルトになりますtabstop
。
答え2
Vimのインデントオプション
Vim はインデントのサイズに関して主に 3 つの設定を使用します。
tabstop
,ts
: Vimは開いているファイル内でタブに遭遇すると、タブを{ts}個のスペースとして表示します(タブストップヘルプ、または:help tabstop
Vim で入力します)。softtabstop
,sts
: ファイルを編集中にタブキーを押すと、Vimはこの設定を使用して挿入されるタブの幅を定義します(softtabstop ヘルプ、または:help softtabstop
Vim で入力します)。shiftwidth
,sw
: Vim がインデントするときに使用するスペースの数。自動インデント機能または通常の>>
,<<
コマンドを使用します。Heptite が気づいたように、これはこの特定のケースで探していたものです。そして最近のバージョンの Vim では、このオプションを定義しなくても、shiftwidth
で定義された値を取ることができますtabstop
。非常に便利です (シフト幅ヘルプ)。
例
たとえば、次の設定を使用する場合:
set sts=4
set ts=2
set sw=8
これらは次のような動作を生み出します。
- ファイルにタブを挿入すると、4 スペース幅のインデントが生成されます。
- が 2 に設定されているため
tabstop
、これは実際には 2 つの表に相当します。これは簡単に確認できます。表を表示するには、list
およびlistchars
オプションを使用するだけです。 - を使用して行をインデントすると
>>
、インデントの幅は 8 スペースになります (したがって、tabstop
値に基づいて 4 つのタブに相当し、上記と同じです)。
Vim のインデントの推奨事項 (Vim のドキュメントより)
ヘルプから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 スペース幅の表を使用する 2 番目のソリューションを主に使用します。
set ts=2
set sts=2
set et "expand tabs to spaces
答え3
によるとhttp://vim.wikia.com/wiki/ソースコードのインデント'filetype plugin indent on' コマンドを実行すると、プログラムは Vim インストールの indent サブディレクトリにあるファイルタイプ固有のインデント スクリプトを使用します。このページには、C および C++ ファイルでは 'cindent' が自動的に使用されるため、このコマンドを手動で使用する必要はないとも記載されています。
私は Vim にあまり詳しくなく、たまに基本的なテキスト編集にしか使用しませんが、そのコードに Vim のデフォルトの自動インデント サイズを使用するには、'cindent' コマンドを手動で発行してみます。それが機能しない場合は、'filetype plugin indent on' を試して、スクリプトを自分で編集し、必要なインデントを取得してください。