<Tab>を押したとき、および自動インデントが適用されたときのVimタブサイズ


22

タブサイズを4から2に変更することにしました。なぜですか。コードを確認したい人なら誰でも確実にその設定を使用できます。

ただし、質問。

タブキーを押すと2が挿入されますが、Vimの自動インデントはまだ4を入れています。その2にするために何を変更すればよいですか?

もう1つの無関係な質問:Cおよび類似の言語に最適なインデントスタイルはどれですか。私は1TBSを使用していますが、たくさんの選択肢があります。それらのいずれかがより専門的または好ましいですか?

回答:


17

shiftwidth」を「」と同じ値に設定してみてくださいtabstop。さらに良いことに、Vimの最新バージョンを使用している場合は、「shiftwidth」を0に設定すると、デフォルトで「tabstop」に設定されているものに設定されます。


これは私が探していたものです。現在ts、2、4、または8の設定間の議論
user341814

非コードファイルでは8を使用し、言語とネストの発生頻度に応じて2または4を使用します。
ヘプタイト2014

今はCしかやってない。
user341814 14

33

Vimインデントオプション

Vimは主にインデントサイズについて3つの設定を使用します。

  • tabstopts:Vimが開いているファイルで表を検出すると、タブを{ts}スペースとして表示します(tabstopのヘルプを参照するか:help tabstop、Vimに入力してください)。
  • softtabstopsts:ファイルを編集してタブキーを押すと、Vimはこの設定を使用して、挿入される表の幅を定義します(softtabstopのヘルプを参照するか:help softtabstop、Vimに入力します)。
  • shiftwidthsw:スペースVimの使用回数のいずれか、インデントオートインデントのものや、通常使用して>><<コマンドを。Heptiteが気づいたように、これはこの特定のケースで探していたものです。そして、Vimの最近のバージョンでは、実際にこのオプションを定義せずに、で定義shiftwidthされた値を取りますtabstop。かなり便利です(shiftwidthのヘルプを参照してください)。

たとえば、次の設定を使用する場合:

set sts=4
set ts=2
set sw=8

これらは次の動作を生成します:

  1. ファイルに表を挿入すると、4スペース幅のインデントが生成されます。
  2. あなたは次のようにtabstop2に設定されている、これは実際には2件の集計のと同等になります。これはかなり簡単にチェックできます。listlistcharsオプションを使用して、表を表示します。
  3. を使用して行を>>インデントすると、インデントは8スペース幅になります(したがって、tabstop上記のように、値に基づいて4つの表に相当します)。

ここに画像の説明を入力してください

Vimインデントの推奨事項(Vimドキュメントから)

tabstopヘルプから(:help tabstopVimで):

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

-1

http://vim.wikia.com/wiki/Indenting_source_codeによると、「filetype plugin indent on」コマンドを使用すると、プログラムはVimインストールのindentサブディレクトリにあるファイルタイプ固有のインデントスクリプトを使用します。このページには、CおよびC ++ファイルで 'cindent'が自動的に使用され、そのコマンドを手動で使用する必要がないことも記載されています。

私はVimに慣れていないため、たまに基本的なテキスト編集にしか使用していませんが、「cindent」コマンドを手動で発行して、Vimのデフォルトの自動インデントサイズを使用してみます。それがうまくいかない場合は、「filetype plugin indent on」を試して、スクリプトを自分で編集し、目的のインデントを取得できます。

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