5

私の以前の質問は少し曖昧なようです。言い換えます。

次のようなファイルがあります。

copythis abc
replacethis1 xyz
qwerty replacethis2
hasfshd replacethis3 fslfs
And so on...

注: replacethis1、replacethis2、replacethis3、...任意の単語である可能性があります

最小限のvimコマンドを使用して、「replacethis1」、「replacethis2」、「replacethis3」、..単語を「copythis」単語に置き換えるにはどうすればよいですか。

私ができる1つの方法は、次の手順です。

  1. 「dw」を使用して「replacethis1」、「replacethis2」、「replacethis3」などを削除します
  2. 「yw」を使用して「copythis」をコピーします
  3. 「replacethis1」があった場所にカーソルを移動し、「p」を実行します。「replacethis2」があった場所にカーソルを移動し、「p」などを実行します...

VIM でこれを行うより良い方法はありますか (より少ない数の vim コマンドを使用)?

4

9 に答える 9

6

あなたがあなたの質問を変えたので、私はそれをこのようにします:

最初の「replacethis1」に移動してcw(単語の変更)と入力し、「copythis」と手動で入力します。

次の「replacethis」に移動し、を押します。(最後の操作を繰り返します)

次の「replacethis」に移動し、。を押します。

などなど。

「copythis」が小さな言葉なら、これが最善の解決策だと思います。

于 2009-02-28T08:09:02.437 に答える
4

数字を含める必要があり、1 行に複数のインスタンスが存在する可能性があります。

:%s/replacethis\d/copythis/g
于 2009-02-28T12:31:42.163 に答える
3

「replacethis[1-3]」が任意の無関係な単語になる可能性があることを考えると、これをグローバルに行うための最も迅速で簡単な方法は次のようになります。

:%s/replacethis1\|replacethis2\|replacethis3/copythis/g

(パイプを「or」として機能させるには \| を使用する必要があることに注意してください。それ以外の場合、vim はリテラルの | 文字を探します。)

于 2009-02-28T13:10:41.087 に答える
2

私も長い間これに苦労してきました、私はちょうど最もきれいな方法を考え出したと思います:

copythisをレジスタrに入れるには、最もクリーンなコマンドを使用します。

/copythis
"rye

次に、置換に移動し、rの内容に置き換えます。

/replacethis
cw<CTRL-R>r<ESC>

次に、残りの部分だけn.n.n.n.n.n.n.を使用するか、大きく異なる場合は、それぞれの先頭に移動してヒットします。.

.重要なのは、後で使用できるように、1つのステップで置き換えて貼り付けることです。

于 2009-03-10T16:29:42.133 に答える
1
:%s/copythis/replacethis/g

copythisのすべての出現箇所をreplacethisに置き換えます。または、次のような行番号の範囲を指定できます。

:8,10 s/copythis/replacethis/g

最後の/gは、すべてのオカレンスを置き換えるように指示することに注意してください。それをオフにすると、最初の1つが実行されます。

于 2009-02-28T07:56:28.300 に答える
1
  1. このマッピングを作成します。

    :map z cwcopythis ^ [

    (^[はエスケープ文字です。Ctrl+Vを使用してvimに入力できますCtrl+[)

  2. 置き換えたい各単語に移動し、zを押します

于 2009-02-28T08:09:39.360 に答える
0

文字列の置き換えを試しましたか?

%s/replacethis/copythis

置換を微調整するために、他の多くのパラメーターが可能です。詳細については、Vimのヘルプをご覧ください。ここにいくつかの例があります。

于 2009-02-28T07:54:40.693 に答える
0

基本的に同じアクションを複数回実行する必要がある場合-ある行の最初の単語を次の行の2番目の単語と交換する場合は、マクロを記録して、必要なときにいつでも呼び出すことができます。

于 2009-02-28T07:58:17.390 に答える
0

たとえば、通常モードのキーを再マップmして、カーソルの下の単語を削除し、バッファーを貼り付けることができます:nnoremap m "_diwP。次に、目的の単語をコピーし、カーソルを置換する単語の上に移動して、m.

編集: m へのマッピングは、場所をマークするために使用されるため、悪い考えです。;ただし、とにかく使用できます。

于 2013-10-18T10:58:59.093 に答える