タブVsに関しては、Vimは非常に親切です。スペース設定。私が理解しているように、tabstop
設定はタブ文字の幅を示しています。この設定は、およびコマンドshiftwidth
を使用するときにインクリメント/デクリメントする列の数を指定しますが、この設定は、挿入モードでキーを押したときに挿入される空白の量に影響します。オンの場合、タブキーはスペース文字の数を挿入します。スイッチをオフにした状態でキーを押すと、に一致するタブ+スペース文字の数が可能な限り少なくなります。(間違っている場合は訂正してください。)<<>>softtabstop
Tabexpandtab
softtabstop
expandtab
Tabsofttabstop
この最後のポイントは私に不思議に思います:あなたが望まないであろう実際的なケースはありますshiftwidth == tabstop && tabstop == softtabstop
か?思いつかない。私に関する限り、これら3つすべてを1つの割り当てで同じ値に設定できれば最も便利です。例:呼び出し:
:set stab=4
これは、実行するのと同じです。
:set tabstop=4 softtabstop=4 shiftwidth=4
誰かがこれをどのように行うことができるかを提案できますか?
アップデート
あまりにも多くのphp、hobbs、kaiser.seからの返信に感謝します。それぞれに個別に返信するのではなく、ここで質問を更新しています。
ExpandtabがオフになっているSofttabstop
上記で、expandtabをオフにした状態で、Tabキーを押すと、に一致するタブ+スペース文字の数が可能な限り少なくなると述べましたsofttabstop
。私はそれを支持しますが、私が何を意味したのかを説明する必要があると思います。いくつかの例を挙げて、そうしようと思います。フォローするには、:set list
タブ文字が表示されるように実行します。
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
挿入モードでは、Tabキーを押すと2つのスペース文字が挿入されます。Tabキーをもう一度押すと、さらに2つのスペース文字(合計4つのスペース文字)を挿入する代わりに、前の2つのスペースが1つのタブ文字に置き換えられます。タブストップは4に設定されているため、1つのタブ文字の幅は4スペースと同じです。
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
挿入モードでタブキーを押すと、1つのタブ文字と2つのスペースが挿入されます。タブ文字の幅は4であるため、合計幅は6であり、これは3文字を使用して実現されます。Tabキーをもう一度押すと、2つのタブ文字が挿入され、前に挿入された2つのスペースが削除されます。全幅は12文字で、これは3文字を使用して実現されます。
これらの例の両方で、Vimはsofttabstopに一致するタブ+スペース文字の可能な最小数を挿入します。
Expandtabをオフにして作業している場合、softtabstopをtabstopとは異なる値に設定することで実現できる、よりきめ細かい制御が必要だとは思えません。を1つのコマンドで同じ値に設定できると、それでも便利ですtabstop
。softtabstop
shiftwidth
Expandtabはsofttabstopを冗長にしますか?
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
挿入モードでは、Tabキーを押すと4つのスペースが挿入されます。Deleteキーを押すと、1つのスペースが削除されます。そのため、誤ってTabキーを押した場合は、4回バックスペースする必要があります。
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
挿入モードでは、Tabキーを押すと4つのスペースが挿入されます。バックスペースキーを押すと、4つのスペースが削除されます。
スイッチをオンにして作業している場合はexpandtab
、タブキーが挿入するのと同じ量の空白を削除するためにDeleteキーを使用することをお勧めします。tabstop
ですから、この場合も、同じ値を同時に割り当てることができれば便利だと思いsofttabstop
ますshiftwidth
。
ショートカットはまだ役に立ちます
Vimが非常に多くの柔軟性を提供することは素晴らしいことですが、私はそれを必要としているとは思えません。タブの幅と、それが「ハード」タブ(タブ文字を使用)か「ソフト」タブ(スペースで構成)かを選択できるようにしたいだけです。ハードタブとソフトタブの切り替えは簡単ですが(:set expandtab!
)、3つの異なるパラメーターをいじる必要がなく、タブの幅を設定する方が簡単だったらいいのにと思います。
ですから、私の提案したようなものについての提案は、:set stab=4
まだ私には良いと思います。