curluneの日記

日々試行錯誤。雑多に、気ままに、てきとーに。HoloLens/Oculus Rift,Touchと戯れる日々。

私のvimのタブ入力切替マッピング ひとりぷちアドベントカレンダー2017 23日目

個人的に利用しているvimのタブ入力切替のマッピングについてのお話です。

タブ切替マッピング

最近は次のような設定で落ち着いています。

nnoremap <Space>t2 :<C-u>setlocal softtabstop=2 shiftwidth=2   expandtab<CR>
nnoremap <Space>t4 :<C-u>setlocal softtabstop=4 shiftwidth=4   expandtab<CR>
nnoremap <Space>t8 :<C-u>setlocal softtabstop=8 shiftwidth=8 noexpandtab<CR>

スペース周りの設定値の意味はこんな感じです。

  • softtabstop:
    • タブ文字スペースいくつ分と同じように扱うか。
    • 編集の際にスペースN個の纏まりをタブ文字1個かのように追加/削除したい時に設定します。
  • shiftwidth:
    • インデントしたい、という時にいくつ分のスペースを使うか。
    • 内部の機能等で自動インデントする際にどれぐらいずらして欲しいかを設定します。
  • expandtab:
    • タブ文字を入力した時に、代わりにスペースに換えるかどうか。
    • ファイルにタブ文字をファイルに残したくない時に設定します。
  • tabstop:
    • タブ文字をスペースいくつ分として表示するか。
    • 既にファイルにあるタブ文字をどのようなサイズの見た目にしたいかを設定します。
    • ファイル内のインデントがタブ文字の場合だけ(t8相当)、好みで設定しても大丈夫です。

終わりに

簡単なショートカットで使えるようにしておくと便利です。