web-dev-qa-db-ja.com

1回のキーストロークでVimのスペース拡張された「タブ」を削除しますか?

私はVimで Python コードを編集します。

とともに tab キーインデントのために4つのスペースを挿入します。 4つではなく1つの「Backspace」(?)ストロークでこれらのスペースを削除するにはどうすればよいですか?

そのためのいくつかの「設定」オプションが必要です...

これが私の.vimrcです:

set autoindent
set ts=4
set sw=4
set et
19
Evgeny
set softtabstop=4
30
sf17k

tl; dr:set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

短縮形:set ts=4 sts=-1 sw=0 et

説明

softtabstop(またはsts)を-1に設定すると、自動的にtabstopts)と同じように動作するため、節約できます。タブを大幅に変更すると、面倒になります。 shiftwidthsw)を0に設定すると、実質的にtabstopと同じになります。

詳細に

shiftwidthsw

(自動)インデントの各ステップに使用するスペースの数。 cindentに使用され、 >>、 <<、など。
ゼロの場合、tabstop値が使用されます。

tabstopts

ファイル内のaがカウントするスペースの数。 :retab コマンド、およびsofttabstopオプションも参照してください。

softtabstopsts

スペースの数 Tab 挿入などの編集操作の実行中にカウントされます Tab または使用 BS。それのように感じます Tabsが挿入されていますが、実際にはスペースとsが混在して使用されています。これは、tabsを標準値に設定したまま、stsに設定されているように編集できるようにする場合に便利です。 stsが負の場合、shiftwidthの値が使用されます。これにより、タブストップを変更する手間が省けます。たくさん。 expandtabが設定されていない場合、スペースの数はを使用して最小化されます Tabs。

expandtabet

挿入モードの場合:適切な数のスペースを使用してを挿入します。スペースはインデントで使用されます > そして < コマンドおよびautoindentがオンの場合。 expandtabがオンのときに実際のタブを挿入するには、 Ctrl-VTab。参照 :retab

5
Orwellophile

私は GreedyBackspace.vim このようなものが欲しい人のために書いた。個人的には使っていないので、更新してから久しぶりです。最近、バグレポートを受け取っていません。

2
Heptite

いくつかのオプション:

  1. すべての空白を「再タブ化」して、タブに置き換えることができます。そうすれば、簡単に削除できます。
  2. (これはテストされていないので、ここでアイデアを提案しているだけです)、バックスペースキーの4倍の通常モードで実行する関数を作成できます。次に、それを何かにマップします。ただし、スペースまたはいくつかの重要な文字を削除するかどうかを知る方法がないため、これは潜在的に安全ではありません。
  3. 「4X」は最後の4文字を削除します(つまり、大きいXは小さくなく、小さいものはDelキーのように機能します」。
1
Rook

最も簡単な方法は<<で、.で繰り返します

0
vimmer