Skip to content

Instantly share code, notes, and snippets.

@toshiyukino
Created September 27, 2015 16:11
Show Gist options
  • Save toshiyukino/02ff25d48658c94db41f to your computer and use it in GitHub Desktop.
Save toshiyukino/02ff25d48658c94db41f to your computer and use it in GitHub Desktop.

2ch Vim6 Part3 94 より:

インデントには'tabstop'、'shiftwidth'、'softtabstop'の3つのオプションが関わっています。これらのうち'softtabstop'はvimオリジナルのオプションになります。cindentやautoindent時に挿入されるタブの幅は'shiftwidth'で決定されます。少々ややこしいですが各オプションの意味は下記のとおりなので、ちょっとがんばって理解しておけば柔軟に設定できるようになるでしょう。

  • 'tabstop' (短縮名'ts') ファイル中の文字(キャラクターコード9)を、画面上の見た目で何文字分に展開するかを指定する。既にあるファイルをどのように表示するのか指定したい時に便利。

  • 'shiftwidth' (短縮名 'sw') vimが挿入するインデント('cindent')やシフトオペレータ(>>や<<)で挿入/削除されるインデントの幅を、画面上の見た目で何文字分であるか指定します。自動的に挿入される量、と覚えておくと良いです。

  • 'softtabstop' (短縮名'sts') キーボードでキーを押した時に挿入される空白の量。'softtabstop'が0以外の時には、例え'ts'を4に設定していても、を1度押しても'softtabstop'分だけ空白が挿入されます。逆に'softtabstop'が0の場合には挿入されるのは'ts'で指定した量になります。

  • vimが自動的に挿入したかキーによって挿入された空白は、'ts'に設定された幅でTab文字へと自動的に置き換えられます(ただし'expandtab'が設定されていない場合)。これは十分に賢い機能なので特に意識しなくても良いでしょう。

  • で以上のことと、一般のエディタがTabを4文字か8文字で表示することを踏まえると

:set ts=4 sw=4 sts=0

 :set ts=8 sw=4 sts=4

という設定が必要になります。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment