12

dt文字列内の文字の方法またはdf最後の出現を理解しようとしています。

たとえば、次の行があるとします。

foo not.relevant.text.bar

f df.期待通りに手に入れfoo relevant.text.barたいのですが、手に入れたいのですがfoo barf 3df.文字列にその文字がいくつ含まれるかわからないため、使用することはできません。さらに、foo .barf 3dt.)を取得したい場合もあります。または、行がドットで終わっている場合は、を取得したい場合がありますfoo .。いくつあっても、必ず最後のものを見つけたいです。

これは正規表現なしで可能ですか?正規表現を使用できると思いますが、欠落している単純なvimコマンドがあることを期待していました。私は自分がこのようなことを頻繁にやろうとしていることに気づきます。

4

5 に答える 5

12

正規表現を使用せず、 「ドット」を数えずに1つの方法(他の文字である可能性があります)...他の方法がより良い方法があるかどうかを確認します。

foo[I]not.relevant.text.bar[I] is cursor

あなたは試すことができます:

lmm$T.d`m

またはこの形式では、見栄えが良くなる可能性がありますか?

lmm$T.d`m

これでうまくいきます。頻繁に使用する場合は、マッピングを作成できます。

編集

GIFアニメーションを追加して、機能することを示します。:)

ノート

コマンドラインで押したキーを表示するため@=に、カーソルを右の開始点(by)に移動した後、通常モードで入力しました。f(space)

ここに画像の説明を入力してください

于 2013-03-06T14:05:15.027 に答える
9

あなたは私のJumpToLastOccurrenceプラグインを使うことができます。それはまさにそれを行う,f///コマンドを提供し,Fます。,t,T

于 2013-03-06T14:11:15.320 に答える
4

私は使うだろうf df...

入力するのが必ずしも短いわけではありませんが、削除したい単語/文の数を事前に数えるよりも、「最後のコマンドを繰り返す」の方が使いやすいと思います。

次に、.入力する数を調整して、削除する文字列の長さを調整できます。

于 2013-03-06T14:02:45.947 に答える
1

あなたの例のために:ET.dB

foo not.relevant.text.bar

そして、カーソルが「foo」に続くテキスト内のどこかにある限り、それは機能します。

パス+ファイル名からパスを削除します。ET/dB

末尾のファイル名を除くすべてのパス名を削除するために使用します。

/some/long/path/filename.extからパスを削除し、ファイル名のみを残します。

限り:

  • カーソルは太字の単語内のどこかにあります
  • その単語にはスペースがありません

    1. E最後に移動します(スペースがないため、行の最後ではない場合でも機能します)

    2. T/最後のものを見つけます/(直後に停止するので、それも削除されます)

    3. dB単語の先頭まで削除

于 2019-02-16T02:30:57.467 に答える
0

ビジュアルモードの場合:

$F.d^

$は現在の行の終わりに移動し、Fはある期間を逆方向に検索し、d^は行の先頭まで削除します。

于 2013-03-06T14:10:19.110 に答える