问题描述
已经有下面的文档
<a id='' href='https://www.6hehe.com/wenda/18092.html'></a> <a id='' href='https://www.6hehe.com/wenda/18092.html'></a> <a id='' href='https://www.6hehe.com/wenda/18092.html'></a>
系统剪贴板里面有如下内容:
home help variables
需要在每行的第15个位置处插入,形成下面的格式
<a id='' href='https://www.6hehe.com/wenda/18092.html'>home</a> <a id='' href='https://www.6hehe.com/wenda/18092.html'>help</a> <a id='' href='https://www.6hehe.com/wenda/18092.html'>variables</a> 如果vim不行,用awk可以吗?
这个答复不行,
先输入
homehelpvariables
然后使用 s 命令输入 :%s/^/<a id='' href='https://www.6hehe.com/wenda/18092.html'>/g 回车 再输入 :%s#$#</a>#g 回车
如果我进一步,需要从这个基础上
<a id='' href='https://www.6hehe.com/wenda/18092.html'>home</a> <a id='' href='https://www.6hehe.com/wenda/18092.html'>help</a> <a id='' href='https://www.6hehe.com/wenda/18092.html'>variables</a> 形成下面的<a href='https://www.6hehe.com/wenda/18092.html'>home</a> <a href='https://www.6hehe.com/wenda/18092.html'>help</a> <a href='https://www.6hehe.com/wenda/18092.html'>variables</a> 你又如何办?再走远一点 <a href='https://www.6hehe.com/wenda/home.html'>home</a> <a href='https://www.6hehe.com/wenda/help.html'>help</a> <a href='https://www.6hehe.com/wenda/variables.html'>variables</a> 你如何快速搞定??
问题解答
回答1:光标移到左上home前
<C-v>jj$x<ESC>
光标移到第一个</a>之前
p回答2:
先输入
homehelpvariables
然后使用 s 命令输入 :%s/^/<a id='' href='https://www.6hehe.com/wenda/18092.html'>/g 回车 再输入 :%s#$#</a>#g 回车
回答3:看了一下你的需求, 觉得你可能需要的是 vim-snippets 插件
回答4:光标移到第一个</a>之前:<c-v>jjjp
回答5:对于第一个需求,不需要替换,可以这样实现:

图片比较大,如果加载不出来,这里是原地址
操作顺序:
光标移到第一行的 '' 的 '<' 位置,Ctrl+v 进入列选择模式,jj$ 选中所有的 </a>,然后 d
光标移至 'home' 那一行,Shift + v 进入行选择模式,jj 选中三行,然后 :right,回车
$ 把光标移至 'home' 结尾,按 p 粘贴
gv 选中所有,然后 :left,回车
光标在第一行 'home' 的 'h' 上,Ctrl + v 进入列选择模式,jj$y 复制三行
gg$ 光标移至第一行末尾,然后 p
第二个需求同理,剪切一下 id='' 第二个引号以及后面内容就行了。第三个需求,暂时想不出更好的方法
回答6:可以用 Bash+Sed可以处理,不过这样处理就像是用程序语言处理一样
#! /bin/bashi=1rm sd.fcat sd.in | while read LINEdo echo '${i}s/>/>${LINE}/' >>sd.f #echo '${i}s/id='/ >>sd.f #第二次处理 #echo '${i}s/ref='/ref='${LINE}.html/' >>sd.f #第三次处理 ((i++))done#cat sd.fsed -f sd.f test.txt
备注:test.txt是要处理的源文件,sd.f是用程序生成的存放sed处理命令的文件。sd.in是存放的变量值,即home,help……三个值
回答7:# 光标定位到第一行 a 标签qa # 开始录制宏<n>jyw # 复制要插入的文本<n>kf>p # 回到对应到 a 标签,找到对应到位置,粘贴j0 # 光标下移一行q # 结束录制2@a # 重播宏# 上面的 <n> 是个数字,取决于你第一行 a 标签与第一行待插入文本之间的行数

