Vim/NeoVim でタブ文字に関する設定を行う (tabstop, expandtab, softtabstop)

タブ文字 1 文字分の表示幅を設定する

タブ文字がどれくらいの幅で表示されるかの設定は tabstop オプションで行います。

Vim (~/.vimrc) の場合
:set tabstop=4  "タブ 1 文字の表示幅 (default: 8)
NeoVim (~/.config/nvim/init.lua) の場合
vim.opt.tabstop = 4  -- タブ 1 文字の表示幅 (default: 8)

例えば、tabstop を 4 に設定すると、ファイル内のタブ文字は 4 文字分のスペースとして表示されます。 この設定は、あくまで見え方の設定であって、タブは 1 文字のタブ文字 (\t) として存在します。 他のエディタでファイルを開くと、タブ文字の見え方は変わってきます。

タブを入力したときにタブ文字の代わりにスペースを挿入する

TAB キーを押したときに、タブ文字の代わりに半角スペース x N を入力したいときは、expandtab を有効化します。 さらに、TAB キーを押したときに何文字分の半角スペースを入力するかは、softtabstop で設定します。 softtabstop=4 と具体的な値を設定するのもよいですが、負の値(-1 など)を設定すると、tabstop で設定した値に合わせてくれます。

Vim (~/.vimrc) の場合
:set expandtab       "タブキーでスペースを入力する (default: noexpandtab)
:set softtabstop=-1  "タブキーで入力するスペース数 (-1: tabstop に合わせる)
NeoVim (~/.config/nvim/init.lua) の場合
vim.opt.expandtab = true  -- タブキーでスペースを入力する (default: false)
vim.opt.softtabstop = -1  -- タブキーで入力するスペース数 (-1: tabstop に合わせる)

ちなみに、expandtab が有効化されているときにタブ文字を明示的に入力したくなった場合は、CTRL-V <TAB> あるいは CTRL-Q <TAB> で入力できます。

参考