vim 复制某关键字的行 在连…

来源:互联网 发布:linux创建用户指定组 编辑:程序博客网 时间:2024/06/05 16:54
Q:想复制含有某个关键字的所有行到另外一个文件中,该如何操作呢?
例如:
<1>this is abook;
<2>this is adog;
<3>this is aenglish book;

要将所有含book的行copy出来。

方法:
" Clear registerA
:let@a=""
" Append all lineswhich matchs book to register A
:g/book/yA
" Open a newbuffer
:new
" Paste content ofregister A into the new buffer
:puta

解释:
:let @a=""使用let命令寄存器a里的内容清空
:g/book/y A把所有包含book的行都添加到寄存器a中。注:此处是A而不是a,A意味着符合要求的行都被追加到寄存器a中,而a则意味着符合要求的行都会替代寄存器里的内容,如果用a就会导致最后寄存器里只有符合要求的最后一行。
至此,所有包含book的行都在寄存器a里面了。
:put a把寄存器a里的内容粘贴出来

也可以直接写到文件中去:
:g/book/. w>> filename


附:vim剪切板与命令行
Q:如何将命令模式下复制的东西黏贴到:命令行里?
:"
:helpquotequote
或者:
:shift+insert

按键操作:
注释:ctrl+v进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如"#",再按Esc,就会全部注释了。
删除:先按v,进入visual模式,横向选中列的个数(如"#"注释符号,需要选中两列),再按Esc,再按ctrl+v进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号(#)。

PS:当然不一定是shell的注释符"#",也可以是"//",或者其他任意的字符;vim才不知道什么是注释符呢,都是字符而已。

0 0
原创粉丝点击