VIM中的行选择
如何选择VIM中不包含单词“hello”的所有行?我需要把它拉出来,然后保存到一个文件中。我怎么做?我正在寻找类似于: :v/!(你好)>文件VIM中的行选择,vim,Vim,如何选择VIM中不包含单词“hello”的所有行?我需要把它拉出来,然后保存到一个文件中。我怎么做?我正在寻找类似于: :v/!(你好)>文件 如果系统上有grep,则可以使用以下命令: :!grep -v hello % > file 我通常会用一些不同的 :g/hello/d i、 删除所有包含“hello”的内容,然后选择、猛拉或任何需要执行的操作,最后返回到u。 我发现这比构建命令行管道更省心。选择并写入新文件: :g/hello/ . w!>> file 在V
如果系统上有
grep
,则可以使用以下命令:
:!grep -v hello % > file
我通常会用一些不同的
:g/hello/d
i、 删除所有包含“hello”的内容,然后选择、猛拉或任何需要执行的操作,最后返回到u。
我发现这比构建命令行管道更省心。选择并写入新文件:
:g/hello/ . w!>> file
在Vim命令之后
:let @a='' | g!/hello/normal "Ayy
您将在寄存器“a”中拥有所有没有“hello”的行。您可以使用“ap normal”命令粘贴其值,也可以使用
:let @*=@a
然后,您可以在Windows上使用“Ctrl+V”,在Mac Os上使用“Cmd+V”,或者在Linux上使用“鼠标中键单击”来粘贴文本
魔法简介:
@a是绑定到“a”寄存器中存储的值的Vim变量。“ap,“bp,”cp。。Vim正常模式下的按键组合是否超过特定寄存器中的值。
@*是绑定到系统剪贴板的Vim变量。
让@*=@a将寄存器“a”中的值放入系统剪贴板。
将其添加到.vimrc或使用插件目录创建文件
function s:copy_unmathced_lines(pattern)
let result_lines = []
for line in getline(1, '$')
if line !~ a:pattern
call add(result_lines, line)
endif
endfor
let @* = join(result_lines, "\n")
endfunction
command -nargs=1 CopyUnmatchedLines call s:copy_unmathced_lines(<q-args>)
然后只需在任何编辑器中使用“粘贴”命令
:g!/hello/ yank A
这些行现在存储在寄存器a中,以便将它们粘贴到“ap”中
编辑:
可以缩写为
:g!/hello/y A
对于那些对这对vim意味着什么感兴趣的人:
:g=全局搜索!=后面的布尔测试的否定
/hello/=匹配“hello”的正则表达式
y=在每个匹配行上执行的命令,在本例中为“yank”
A=寄存器参数到“yank”命令。在本例中,寄存器“A”以大写形式表示附加到寄存器,而不是替换。到目前为止,我没有看到提到的另一种方法是重定向 所以对于你的情况,这将是
:redir > file
:g!/hello/
:redir END
另见
:help redir
:help verbosefile
女性生殖器切割的答案就在那里 :v将选择不匹配的行 因此,下面将把不包含“hello”的行附加到名为eee的文件中,并在需要时创建它
:v/hello/ . w!>>eee
Blixtor代码片段的一个实际示例:用“:verbosefile”向好友发送电子邮件 I.打开手册“:e/tmp/new_file”和“:h verbosefile”,然后复制cat blixtor的提示:
:redir > /tmp/verbosefile_instructions
:g/verbosefile/
:redir END
二、 确认您遵守有关电子邮件长度的标准规则,并发出标准问候语:
:match ErrorMsg /\%>73v.\+/
:so /bin/greetings.vim
三、 将文件与Mutt一起发送。有关视觉选择和复制的示例:假设要分离零件:
:“非常直截了当
:v/hello/ |redir >> file
+1-但您需要将该g/切换到v/以选择所有不包含hello“%”的行。对于grep,它不是特殊字符,对于vim命令行,它是特殊字符,请参阅:help cmdline specially您的答案似乎没有回答问题的其余部分:“>file”“。让我们以悬赏的方式重新评估回复。我对控制缓冲区的方式特别感兴趣:保存、编辑并最终重定向到文件。这个答案似乎很酷,但不知何故很难理解。”。也许,有人可以在回答中澄清事物在表面之下是如何运作的。像“@a”和“let”这样奇怪的东西是什么?比如,维姆还是别的什么?
:v/hello/ |redir >> file