两个Vim的小技巧 :]
其实就是两个正则表达式,刚好今天用到了,就记下来。
1. 有多行文本,其中有几行是URL,要保留这几行URL,其它的行删掉。
:g!/:\/\//d
g本来是用来做grep类似的事情的,:g/pattern 会显示出符合pattern的所有行
惊叹号!表示相反,就是指选中的行是不符合pattern的。后面的/d是表示删掉选中的行。
2. 有多行文本,每行都是类似这样的
keyA=valA&keyB=valB&keyC=valC
现在要交换key和val的位置,变成
valA=keyA&valB=keyB&valC=keyC
:%s/\<\(\w*\)\>=\<\(\w*\)\>/\2=\1/gi
%s是全局替换,这个比较常用了。\<和\>是不太常用的anchor字符(锚字符),分别表示word的开始和结束。
\(..\)也比较常用了,可以保存匹配结果。\w*表示一个或多个word字符。
word字符包括a-zA-Z _ 和 0-9
:]
赞
怎么评论还不能只有一个字。。。。
啊
我也才知道….
啊啊啊,真复杂
另外你这个留言板功能也好有趣
Disqus? 这个挺方便的,貌似已经有国内版的了。
第一个为什么不行捏。。。我在windows+vim下输:g/^file//d想删除所有用file开头的BibTeX项,但这货直接开始找d,感觉像是执行了两个命令:g/^file/和/d。如果直接输g/^file/的话的确会输出所有符合要求的行,但怎么一下全部删掉呢。。。
哦,试了一下g/^file/d就好了,为什么你的文章中是g/xxx//d呢?打错了还是咱们版本不一样?
是一样的,我写得有点歧义了,应该说d是表示删除而不是/d.
例子里的pattern是”://”..我这个例子太悲剧了。
哦!懂了!原来后一个/是跟着的。。谢啦!