如何在vim中查找和删除部分单词?

时间:2017-02-05 22:57:44

标签: vim

我是vim的新手,我拥抱文本文件如下:

ZK792.6,ZK792.6(let-60),cel-miR-62(18),0.239
UTR3,IV:11688688-11688716,0.0670782
ZC449.3b,ZC449.3(ZC449.3),cel-miR-62(18),0.514
UTR3,X:5020692-5020720,0.355907

首先,我想删除偶数(2,4,6 ...)的所有行。

其次,我想从整个文件中删除(18)。举个例子: cel-miR-62(18)将是cel-miR-62。

第三:如何删除包括它在内的所有括号? 有人会帮我这个吗?

2 个答案:

答案 0 :(得分:2)

第一个:

:g/[02468]\>/d

其中:g匹配斜杠之间的正则表达式的所有行,并在匹配的行上运行d(删除行)。正则表达式很容易阅读,唯一有趣的符号可能是\>,它匹配单词的结尾。

关于第二个问题:

:%s/\V(18)//g

其中%是规范含义"文件的所有行",s是替换命令,\V设置"非常无害&#34 34;正则表达式模式(不确定你的默认值是什么,你可能不需要这个),最后g使得vim替换每一行上的所有匹配项(带有空字符串,斜杠之间的字符串)。确保:set gdefault?打印nogdefault(默认设置为gdefault),否则,从替换命令中删除最终g

答案 1 :(得分:1)

  1. 删除每个偶数行(或每隔一行):
  2. :g/^/+d
    
    1. 删除(18)的所有实例:
    2. :%s/(18)//g
      
      1. 删除所有括号内容:
      2. :%s/(.\\{-})//g
        

        注意:第三个答案中的模式是非贪婪的匹配。