1

「//^$ が好きな Ted という名前の人物を知っています」という文、または基本的に文字数が多い文があった場合、エスケープする気はなく、その文のコピーを別の名前で挿入したかった (例: ジョン・メアリー・ボブ)...

for ループは、文をコピーして次の行に貼り付け、名前を下書きすることでこれを行うことができますか? 貼り付ける場所を指定するにはどうすればよいですか?

名前のリストを最初に貼り付けてから、名前の周りに文をサブすることもできます-たとえば:s/^/I know a person named /、エスケープする文字がたくさんあるテキストがたくさんある場合、おそらくどこかでエラーを起こし、無駄になります式を精査する時間。

では、文章から内容をつかんで代用コマンドに入れる簡単な方法はありませんか?

4

2 に答える 2

1

これは、vim のマクロを使用して行うことができます。vim マクロの説明については、http: //vim.wikia.com/wiki/Macrosを参照してください。正規表現を使用するよりもはるかに簡単です。

于 2012-10-04T18:23:18.130 に答える
0

Chiel92 が示唆するように、マクロは最も簡単な方法です。次のようなテキスト ファイルがあるとします。

I know a person named XXX who like //^$

John
Mary
Bob

個人的には:

  1. 行 1 に移動し、その行を名前付きバッファーにコピーします。:1<enter>"iyy
  2. 行 3 に移動して、行の名前をコピーし、iバッファーの内容を貼り付け、XXX を行にあった名前に置き換える マクロを記録します。
    1. 3 行目に移動します。:3<enter>
    2. m を登録するマクロの記録を開始します。qm
    3. 名前を別のレジスターに削除します。"od$
    4. テンプレートに貼り付けます。"ipkdd
    5. XXX を次の名前に置き換えます。:s/XXX/^Ro/
    6. 次の行に移動します。j
    7. 録音を終了する:q

各名前行に対して、マクロを再生できるようになりました:@mまたは@@

注: マクロを作成して再生に問題がある場合は、記録レジストリの内容を確認すると便利です。^R^Rm記録したすべてのコマンドを表示するだけです。

于 2012-10-04T18:38:34.733 に答える