如何用vim进行多行编辑,同时在同一纵向位置插入文本?
已经有下面的文档
<a id="" href=""></a>
<a id="" href=""></a>
<a id="" href=""></a>
系统剪贴板里面有如下内容:
home
help
variables
需要在每行的第15个位置处插入,形成下面的格式
<a id="" href="">home</a>
<a id="" href="">help</a>
<a id="" href="">variables</a>
如果vim不行,用awk可以吗?
这个答复不行,
先输入
home
help
variables
然后使用 s
命令
输入 :%s/^/<a id="" href="">/g
回车
再输入 :%s#$#</a>#g
回车
如果我进一步,需要从这个基础上
<a id="" href="">home</a>
<a id="" href="">help</a>
<a id="" href="">variables</a>
形成下面的
<a id="home" href="">home</a>
<a id="help" href="">help</a>
<a id="variables" href="">variables</a>
你又如何办?
再走远一点
<a id="home" href="home.html">home</a>
<a id="help" href="help.html">help</a>
<a id="variables" href="variables.html">variables</a>
你如何快速搞定??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
光标移到左上home前
光标移到第一个
</a>
之前先输入
然后使用
s
命令输入
:%s/^/<a id="" href="">/g
回车再输入
:%s#$#</a>#g
回车看了一下你的需求, 觉得你可能需要的是 vim-snippets 插件
光标移到第一个
</a>
之前:<c-v>jjjp
对于第一个需求,不需要替换,可以这样实现:
图片比较大,如果加载不出来,这里是原地址
操作顺序:
光标移到第一行的 "" 的 "<" 位置,
Ctrl+v
进入列选择模式,jj$
选中所有的</a>
,然后d
光标移至 "home" 那一行,
Shift + v
进入行选择模式,jj
选中三行,然后:right
,回车$
把光标移至 "home" 结尾,按p
粘贴gv
选中所有,然后:left
,回车光标在第一行 "home" 的 "h" 上,
Ctrl + v
进入列选择模式,jj$y
复制三行gg$
光标移至第一行末尾,然后p
第二个需求同理,剪切一下
id=""
第二个引号以及后面内容就行了。第三个需求,暂时想不出更好的方法可以用 Bash+Sed可以处理,不过这样处理就像是用程序语言处理一样
备注:test.txt是要处理的源文件,sd.f是用程序生成的存放sed处理命令的文件。sd.in是存放的变量值,即home,help……三个值
awk比vi更适合处理这种问题:
再走远一点: