Vim - 轻松编辑过滤结果

时间:2012-06-11 14:29:07

标签: vim filtering

我想使用像vils这样的东西用于vim缓冲区。

示例:

a
b
a
b

搜索“a”(:g/a/

输出:

a
a

然后编辑输出,就好像它是普通缓冲区一样。 当我完成后,它应该逐行将我的更改映射回原始缓冲区。

我该怎么做?

PS:我可以使用:%s/../../或类似的东西,但它不会像它那样舒服。 (即使在 CTRL + F 缓冲区中完成也能正常工作。)

5 个答案:

答案 0 :(得分:4)

使用Qfreplace http://github.com/thinca/vim-qfreplace

  1. 在quickfix中添加一些内容。例如:grep foo * /
  2. 类型:快速修复中的Qfreplace
  3. 根据需要更改行。
  4. :W

答案 1 :(得分:2)

您正在谈论的功能听起来像是emacs中的occure / narrow-to-region

在vim中,您可以输入以下命令:

:vimgrep pattern %

然后输入:cw以打开quickfix-list。

您可以使用鼠标点击或:cn / :cp进行导航以进行更改。

答案 2 :(得分:1)

只要匹配的行跨越单个连续行范围,NrrwRgn plugin可能适合您。

答案 3 :(得分:0)

我通常将这些行复制到文档的末尾

:g/a/t$

如果需要,您可以在“前”文档结束处设置标记:

:$mark a

所以,现在您可以像平常一样编辑文档的'a,$部分,包括将其保存到其他地方:

:'a,$d | new | put!

以下也有效:您可以猛拉,附加到注册a

:g/a/yank A

当然,你可能希望在开始之前清除注册a:

:let @a=""

答案 4 :(得分:-1)

g/../可与

等命令结合使用
:g/^a/ s/a/a.txt/

将每个'a'更改为'a.txt'。见':h:g'