「softtabstop」は何に使用されますか?


21

Vimのこれらのタブ関連の設定を知っています。

  • ts
  • sw
  • expandtab
  • smarttab
  • sts

私の通常の設定はset ts=4 sw=4 expandtab smarttabです。

しかし、stsドキュメントによると、expandtabが設定されていない場合、スペースとタブの組み合わせを使用して、タブサイズに必要な数の空白を構成しようとします。

この設定の有用なシナリオを本当に考えることはできません:なぜ誰かが物事を台無しにするかもしれない固定数のタブとスペースを持ちたいのでしょうか?私が考えることができるこれを行うことの唯一の利点は、文字数を減らし、ファイルサイズを減らすことです。

回答:


20

以下のようsofttabstopdocumentionが言及あなたはタブストップのサイズが他の値であるかのように、デフォルトのタブストップ8の大きさが、編集ファイルを保存したい場合は、それは便利です。たとえば、コードの編集中に4のインデントレベルを求めていましたが、いくつかのコメントが8のタブストップに依存し、あなたが設定できることが、表などのタブインデントテキストがあった場合stsには4

タブ設定(set ts=4 sw=4 expandtab smarttab)と使用sts(例set ts=8 sts=4)の違いの1つは、テキスト行の中央のスペースをバックスペースするときです。たとえば·、スペースを示す次のテキスト行を考えてみましょう。

some·text·······more·text

挿入モードでは、カーソルをmofの直前に移動しますmore text。設定では、Backspaceキーを押すと1つのスペースが削除されます。ただし、を使用している間sts=4、Backspaceは前のタブストップまで削除します。スペースが代わりにタブ文字である場合に動作するためです。

設定sts=4に加えて設定し、タブとスペースを混在させずに、ミッドラインバックスペースの動作を取得できます。タブは4つのスペースに展開されますが、行の途中のスペースの範囲でバックスペースできます。


3

以下の例を参照してください。

// Start vim without loading your vimrc. set only tabstop=8 softtabstop=4.
// This makes <Tab> in insert mode equals to 4 <Space> length at max.

// In insert mode, type 12, one <Tab>, 5. We get insertion below,
12··5
// Quit insert mode. Move cursor back, we find 2 <Space> inserted.

// In insert mode, type 12, two <Tab>, 9. We get insertion below,
12······9
// Quit insert mode. Move cursor back, you find a <Tab> inserted.

// In insert mode, type 12, three <Tab>, 3. We get insertion below,
12··········3
// Move the cursor back, you find a <Tab> and 4 <Space> inserted.

// We can even set sotftabstop=12, but this time we only need type one <Tab>, then 3.
12··········3
// Move the cursor back, you find a <Tab> and 4 <Sapce> inserted.

ではtabstop、aのTab定義の幅と、の入力softtabstop中にカーソルが移動する距離についてです。同じ値に設定されていない場合、キーストロークを押しても、文字が些細なことではないことを意味します。どんな場合でも、挿入モードを終了すると決定するのはvimです。Vimはまず、挿入をできるだけ多く一致させようとします。最後に完全にできない場合、vimは単に補償します。 TabTabTabtabstoptabstopSpace

もう少し話すには、を設定expandtabすると、vimに言うのと同じです。

どのように多くの計算に気にしないでくださいTabSapce必要とされています。単に挿入しSpaceます。


あなたの答えはむしろ暴言のように見え、質問に答えているようには見えません。
ハーブウルフ

@Herb Wolfe私の答えが、POが異常な設定が行われたときに何が起こるかを理解するのに役立つことを願っています:set st=7 sts=13。vimはコーディング用に設計されているだけでなく、もともとテキスト編集用に設計されています。
陳XI

1

簡単な答え:

たとえば、特にPythonでは、集計が非常に重要であるため、プログラミングに非常に役立ちます。sts = 4でBackspaceキーを押すと、単一のスペース文字を削除するのではなく、行のタブが解除されます。

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