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


19

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

tabキーを使用すると、インデント用に4つのスペースが挿入されます。4つの代わりに1つの「Backspace」(?)ストロークでそれらのスペースを削除するにはどうすればよいですか?

そのための「セット」オプションが必要です...

これが私の.vimrcです。

set autoindent
set ts=4
set sw=4
set et

回答:


23

Ctrl+D1つのタブストップをバックアップするために使用できます。これにより、実際には行全体がタブストップの1つ左に移動します。Ctrl+T右側にも同じことを行います。これらのキーストロークは、挿入モードでのみ機能することに注意してください(コマンドモードでの使用<<>>同等)。



5

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です。

詳細に

shiftwidth sw

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

tabstop ts

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

softtabstop sts

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

expandtab et

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


きちんと、私は長年vimを使用してきましたが、sts / sw / tsの継承は目に留まりませんでした。
-timss

2

このようなものが欲しい人のためにGreedyBackspace.vimを書きました。個人的には使用しないので、更新してからしばらく経ちました。しかし、最近はバグ報告を受け取っていません。


1

いくつかのオプション:

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

0

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


こんにちは、スーパーユーザーへようこそ。私はあなた自身の答えがviユーザーであることには同意しますが。あなたの答えは短く、あなたが提案していることを提案する理由と、尋ねられた質問に合うものを提案していない理由を説明していません。
モグ

-1

VIMでタブ展開設定を使用して確認しましたか?

:set noet

私は通常、ファイルの作業中はタブをオンにしたままにしておきます。
必要な場合、タブを4つのスペースまたは必要な数のスペースに置き換えます。

:%s/<ctrl+V><tab>/    /g
                  ----

小さなボーナスとして、ソースファイルはタブごとに3文字短くなります。 :-)


ああ、私はタブを展開しなければならないので、編集したコードが最初にそのように書かれていたので、私はそうしました。今、私はちょうどその慣習に従っています。
エフゲニー

あなたはまだ私が言うことをして、最後にスペースを復元することができます(ファイルをリポジトリに戻す必要がある場合)
-nik

たぶん、開くときにタブに展開し、閉じるときにスペースに折りたたむvim関数を使用できますか?誰にもアイデアはありますか?
sixtyfootersdude

これは本当に役に立たない答えです。実際には有用な情報を提供することなく、tabs-vs-spacesの議論を不必要に開き直します。
ディートリッヒEpp

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