请教下vim中如何做到字符串匹配条件下的批量复制粘贴?
-
- 帖子: 23
- 注册时间: 2006-05-02 10:54
请教下vim中如何做到字符串匹配条件下的批量复制粘贴?
比如说我有一堆电话号码,现在要把所有“1330571”开头的全部复制粘贴到另一个文件里面去。 我尝试了一下global,发现可以根据这样的条件删除,比如“:g/1330571/d”,但是经过观察我发现,这个命令它其实是做了个循环操作,每次处理一行然后根据条件往下找,而不是一次d了一个块。这样的话,我再用p就只能粘贴到最后一行而已。请教下,是否有别的方法呢?
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 请教下vim中如何做到字符串匹配条件下的批量复制粘贴?
把以下脚本存到一个临时文件,然后在你的“一堆电话号码”那个文件窗口里执行:so 刚刚保存的文件,然后就可以去粘贴了。
也可以变通下,把文件复制一份(为安全起见),在副本中利用:v/^1330571/d把不要的行删掉,剩下的就可以拿去复制粘贴了。
其实何必用 Vim 呢,命令行多方便:
代码: 全选
let @" = ''
for l in range(0, line('$'))
if getline(l) =~ '^1330571'
let @" .= getline(l)."\n"
endif
endfor
其实何必用 Vim 呢,命令行多方便:
代码: 全选
grep '^1330571' 来源文件 | xsel -i
# 已经复制到中键的那个剪贴板了
-
- 帖子: 23
- 注册时间: 2006-05-02 10:54
Re: 请教下vim中如何做到字符串匹配条件下的批量复制粘贴?
很不错,居然能用,非常感谢!!
不用grep是因为我在windows下用VIM……
不用grep是因为我在windows下用VIM……
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 请教下vim中如何做到字符串匹配条件下的批量复制粘贴?
http://unxutils.sourceforge.net/ grep, find, sed, gawk 等都有,独立程序,不像Cygwin那样要N多文件才能用。wayne 写了: 不用grep是因为我在windows下用VIM……