web-dev-qa-db-ja.com

VIMの次のN文字を変更します

次の行があるとします。

|add_test()          (| == cursor position)

そして、「追加」を「削除」に置き換えたい。

del|_test()

Xを3回押してからiを押して、delを挿入して入力します。私が欲しいのは、3cだけを上書きする3cや3rのようなものです。これらは両方とも私が望むことをしません。3cは同じ文字で3文字を上書きし、3rは他のいくつかのことを行います。

手動でXingしてテキストを挿入せずにこれを行う簡単な方法はありますか?

58
MrB

3s、 "substitute 3 characters"はc3lと同じです。 3clc3lは同じである必要があります。同じ文字が繰り返し表示される理由がわかりません。私はtを使用することも好きです。 ct_別のポスターが言及したように、文字を数える必要はなく、「del」と入力するだけです。

私も数日間、「数文字の置き換え」に苦労しました。 'r'は単一の文字に最適で、Rは一致する長さの文字列に最適でしたが、OPが求めているようなものが欲しかったのです。そこで、:help xと入力してしばらく読みましたが、sSの説明はxから数ページ下にあることがわかりました。

つまり、:helpはあなたの友達です。読んで学ぶ。

92
dash-tom-bang

c {motion}コマンドを使用:

  1. cf _-最初の「_」まで変更(含む);
  2. ct _-最初の「_」まで変更(除外);
  3. cw-最初のWordを変更します。

Wordはiskeyword変数によって決定されます。 :set iskeyword?で確認し、:set iskeyword = @、48-57,192-255のように '_'を削除します。ところで:help c:help motionを参照してください。

23
lumberjack

3clはあなたが望むものだと思います。右に3文字変更します。 ct_del<esc>と入力しますが、それはあなたが尋ねたものではありません

7
ajk

c3 ( 'c'、 '3'、スペース)、挿入する文字を入力します。 (または、スペースではなく、右矢印またはlを使用できます。)

または、@ Mikeがコメントで言ったように、 Control-R Rは、文字数が削除する文字数と一致する場合にうまく機能します。

またはct_カーソルから次の_ キャラクター。

5
Keith Thompson

作品の長さが同じ場合は、Rコマンドを使用して、以前に入力したものを置き換えます。

3
skeept

与えられた他の答えは番号を使用します。テキストが長い場合、数える必要はありません。たとえば、次のようなマークダウンファイルの見出しをよく作成します。

Some super duper long title that I don't want to have to count

yyppで行を2倍にします

Some super duper long title that I don't want to have to count Some super duper long title that I don't want to have to count

Vで行全体を強調表示し、r{char}を使用します。この場合はr=を使用して以下を取得します。

Some super duper long title that I don't want to have to count ==============================================================(スタックオーバーフローのマークダウンフォーマットをトリップするために上記のスペースを追加しました)

1
user2162559

「c3h」は3文字を戻し、挿入モードに入り、「del」と入力します

0
LeoChu