文字xのn番目の出現までカーソルから削除します


15

私はまでカーソルから削除して、文字の最初の出現を含むことができることを知って、Xd/x<CR>かとv/x<CR>d、私は最初の選択を参照して、削除したい場合に。現在のカーソル位置からxのn番目の出現まで削除するにはどうすればよいですか?

たとえば、カーソルが最初のスペースの後にある場合

ヤダヤダヤダヤダヤダヤダ
x
ヤダヤダヤダx
ヤダヤダヤダx

xx

そして、私は3分の1にまで削除するコマンドを入力し、Xする結果のニーズを:

矢田の
XX

回答:


21

できるよ :

wd4/x<Enter>

テキストの左上から始める場合

説明

  • w :次の単語の先頭に移動
  • d :削除
  • 4/x<Enter> :xの4番目の出現まで

あなたは事前にそれをしたいと思っ回数がわからない場合、あなたも行うことができますd/x<Enter>し、その後ヒット.繰り返しに


5
ボーナスヒント:これもと連携fし、友人(FtT;):例えば、2fx第二にあなたを取得するx、または2;最後に繰り返されるf二回を。
マーティントゥルノイ

1
@Carpetsmoker:これは、現在の行の文字に対してのみ機能します。
ユルゲンクレーマー

5

これを行うには、次のように入力します

<n>df<x>

どこ:

<n> is the number of occurrence of particular character
df<x> means delete till you find the occurrence of character x

0
<n>macro 

vimでマクロを「n」回繰り返すために一般的に使用されます。

したがって、xが最初に現れるまで削除するには、を使用します 1dfx。同様に、xが3番目に現れるまで削除するには、を使用します3dfx


1
「マクロ」という言葉を忘れたと思います。vimでは、マクロはレジスタに記録されたキーのシーケンス@xxあり、レジスタはどこにあるのかを呼び出します。参照しているのは、通常モードのコマンドです。
statox

はい、私は通常のコマンドを意味しました。しかし、これはマクロにも当てはまります。マクロの前に数字を追加することにより、マクロをn回実行できます。
thenakulchawla

1
はい、本当です。<n>macroマクロのvimの標準表記ではないことを指摘していましたが、あなたの答えは通常モードのコマンドを使用しているため、kapilのコマンドとほとんど同じです。
statox

0

与えられた:

yada yada yada$
yada yada yada x$
yada yada yada x$
yada yada yada x$
xx$

ここで、$行(の端部を示す:set listモード)カーソルが第二の開始時である場合、yada最初の行に、まず、使用前のスペースにバックアップする必要がh削除に含めます。それからちょうど4d/xEnter。つまり、の前のカウントのみですd/x。結果は正確に次のとおりです。

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