我有一些这样的文字:
<datetime>2006-04-28T15:49</datetime>
<surfaceintervalbeforedive>
30.00
</surfaceintervalbeforedive>
<tankdata>
我希望用引号标记每一行。可以预期的结果是:
"<datetime>2006-04-28T15:49</datetime>"
"<surfaceintervalbeforedive>"
"30.00"
"</surfaceintervalbeforedive>"
"<tankdata>"
我知道我可以使用 I - “作为第一行和dot-command的每一行。然后 A - ”和dot-command。但是有很多方面,我相信必须有更多的“VIMable”方法。
已解决
我认为最简单的方法是记录像@pktangyue这样的宏并将其应用于这样的范围:1,4norm! @a
答案 0 :(得分:4)
我使用从非空格到非空格的贪婪匹配,如下所示:
:%s/\S.*\S/"&"/
您可以像往常一样指定任何%
,而不是[range]
。
答案 1 :(得分: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
答案 2 :(得分:1)
一种简单的方法是使用一行记录您的操作,然后使用带有数字的宏 要记录命令以注册:
qaI"<Esc>A"<Esc>jq
然后您可以重复:
N@a
N
是您想要重复的行数。
答案 3 :(得分:0)
您可以使用 I - “和** A-”来标记一行,只需先使用Ctrl-Q(或Ctrl-V)选择块,然后移动光标选择你想要什么。
答案 4 :(得分:0)
另一种选择是使用:normal
在每一行上执行普通命令。在I
以下的情况下插入行的开头,A
追加到结尾。
:%norm I"^[A"
^[
ctrl + v esc 。有关引用的更多信息,请参阅:h i_ctrl-v
。根据您的平台 ctrl + q 引用我的可用信息。
如果你有Tim Pope的surround插件,这会变得有点短。
:%norm yss"
有关详细信息,请参阅
:h :norm
:h I
:h A
:h i_ctrl-v
如果您安装了环绕声,请参阅:
:h surround
:h yss