0

次のようなテキストがあります。

<datetime>2006-04-28T15:49</datetime>
                <surfaceintervalbeforedive>
                    30.00 
                </surfaceintervalbeforedive>
                <tankdata>

すべての行を引用符でマークしたいと思います。期待される結果は次のとおりです。

"<datetime>2006-04-28T15:49</datetime>"
                    "<surfaceintervalbeforedive>"
                        "30.00"
                    "</surfaceintervalbeforedive>"
                    "<tankdata>"

最初の行にI-"を使用し、すべての行にドットコマンドを使用できることを知っています。その後、 A-"とドットコマンドを使用します。しかし、たくさんのセリフがあり、もっと「VIMable」なアプローチが必要だと思います。

解決した

最も簡単なアプローチは、@pktangyue が言ったようにマクロを記録し、次のように範囲に適用することだと思います:1,4norm! @a

4

5 に答える 5

4

次のように、非空白から非空白への貪欲な一致を使用します。

:%s/\S.*\S/"&"/

の代わりに、通常どおり%任意のを指定できます。[range]

于 2013-02-21T12:34:21.107 に答える
1

マクロを使用できます。

あなたが今最初の行にいると仮定します

qa  //register a macro to a
I
"
<esc>
A
"
<esc>
j
q
4@a // here change 4 to the total line number minus 1 of your file
于 2013-02-21T12:22:30.213 に答える
1

簡単な方法は、何を行うかを 1 行で記録し、そのマクロを数値で使用することです。
登録するコマンドを記録するには:

qaI"<Esc>A"<Esc>jq

次に、次のように繰り返すことができます。

N@a

N繰り返したい行数はどこにありますか。

于 2013-02-21T12:23:22.100 に答える
0

別のオプションは:normal、各行で通常のコマンドを実行するために使用することです。以下の場合I、行の先頭に挿入しA、末尾に追加します。

:%norm I"^[A"

+はどこ^[にありますか。引用の詳細については、 を参照してください。プラットフォームに応じて+を引用することができます。ctrlvesc:h i_ctrl-vctrlq

Tim Pope のサラウンドプラグインを使用している場合、これは少し短くなります。

:%norm yss"

詳細については、

:h :norm
:h I
:h A
:h i_ctrl-v

サラウンドがインストールされている場合は、次を参照してください。

:h surround
:h yss
于 2013-02-21T14:37:19.143 に答える
0

I-"および **A-" を使用して行のブロックをマークできます。最初に Ctrl-Q (または Ctrl-V) を使用してブロックを選択し、カーソルを移動して必要なものを選択します。

于 2013-02-21T12:28:17.613 に答える