単語の終わりの後に移動するか、cusorの後に削除する


8

カーソル位置のの行の終わりまで削除する最も速いシーケンスは何ですか?

例:

この行をもっと早く削除したい

シーケンス:5eD単語の最後の文字を削除しますline

この林を削除したい

vimで移動すると、単語の最初または最後の文字に移動することが多く、行末まで削除するたびに1つ以上のキーストロークで移動する必要があります(上記の例では、右に1つのモーションを追加します)。5elD)。より効率的な方法はありますか(単語の終わりの後に移動するか、カーソルの後に削除することによって)?


1
6wD最後の単語の後にスペースを残しますが、少なくとも表示されているテキストは希望どおりです。6wDxは仕事を終えますが、それからあなたは再び4回のキーストロークにいます。
Peter Lewerin

代替案を提供してくれたPeterに感謝しますが、実際にこの解決策は、仕事を完了するための別のキーストロークを私に残します。このシナリオは非常に一般的であるため、この作業を1つのアクションで実行できると便利です。しかし、ほとんどのシナリオで、あなたのソリューションは私の例のものより優れています。
Pierre-Jean、

ピーターが提案するようにそれをし、末尾の空白で終わる場合、それらを自動的に削除できるDeleteTrailingWhitespaceのようなプラグインがあります。
Philipp Moers、2016

回答:


4

Dは、一方の端にカーソルがあり、もう一方の端にある行の最後の印刷可能な文字を含むモーションに対して機能する包括的なコマンドです。AFAIKには、包含コマンドを排他コマンドに、またはその逆に変換する組み込みの方法はありません。

最も重い解決策は、独自のオペレーターとモーション/テキストオブジェクトを定義することです。

やや軽い解決策は、これらのコーナーケースのマッピングを定義することです。

さらに軽量な(ただし退屈な)解決策は、ビジュアルモードでさらに数回のキーストロークを費やすことです。

または、少しだけ「アジャイル」な方法で移動することもできます。

5f D

1
まあ、簡単な方法がないのは少し残念ですが、あなたは私の質問に答えました。ありがとうございました!
Pierre-Jean、

1

あなたが望むものを達成するための複数の方法があります:

5elD
6f D
6wDx
6whD
# ... probably others too

これらはすべて、キーストロークを+1するだけで済みます。

現在位置+1からの削除が可能であった場合、現在位置-1からの削除も要求することは理にかなっています。たとえば、現在の行からファイルの終わりまで+ 1、-1を削除するなど、他のコマンドについても疑問を投げかけます。

これはどのように機能するのでしょうか?考えられる方法は2つだけです。

  1. 既存のコマンドにパラメーターを渡して、希望するニュアンスで動作を変更します。これは必然的に+1キーストロークの費用がかかるので、あなたはすでに存在するものより良くなることはありません
  2. この動作には新しいキーストロークを使用してください。キーボードのほとんどのキーには、すでに他に重要で強力な機能があり、そのような小さな機能に未使用のキーの1つを割り当てることは非常に難しい選択です

だから、私は現在の機能よりも優れたものを得る方法がわかりません:-)

次の文字から削除する「アトミック」コマンドがないことは少し残念だと私は同意します。私はあなたが尋ねていることの実用的な使い方を理解しています:テキストを短く切るとき、行末に末尾の空白を残したくないので、スペース文字から始めて削除したいことがよくあります(Gitはそれについて不平を言っています、例えば)。そして、wそしてe、ワードジャンプコマンドは、このために非常に適していないw最初の文字にジャンプし、e最後の文字にジャンプなどで明示的な検索を除いて、単語の後にスペースにジャンプする近道はありませんf。だから私はあなたの必要性を理解し、共有さえします。これが既存の機能のどこに絞り込めるかわかりません。

私が考えることができる最良の代替案は、アクションをマクロに記録することです、としましょうd。単語の最後(最後の文字)に、次のように記録します。

qdlDq

次に、で別の単語の終わりにこのアクションをやり直すことができます@d。繰り返し行うために、あなたは行うことができます@@。繰り返し行う場合、これはを入力するより高速ですlDが、これはあなたの好みに依存するかもしれません。それを繰り返し実行しない場合、マクロは実際には役に立ちません。それは、とにかく同じ数のキーストローク(+マクロの作成)だからです。


「キーボードのすべてのキーには、他にもっと重要で強力な機能があるため、このオプションは明らかに不可能に思えます」違います; いくつかの未使用のキーがあり、そのうちのいくつかはおそらくより強力で重要ではないため、リーダーキーを必要とするように再マッピングされ、本当に重要なもののために解放されます。

さて、マッピングをテストするときに使用するキーはバックスペースキーであり、削除を実行する操作に悪い選択ではありません(現在、このようなアクションで通常使用されるレジスターを変更せずに行削除を実行するように設定しています)。そのため、一部のテキストをコピー/カットし、バックスペースを使用して行を削除してから、元のテキストを貼り付けることができます)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.