10

我想使用vils 之类的东西作为 vim 缓冲区。

例子:

a
b
a
b

搜索“a” ( :g/a/)

输出:

a
a

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

我怎么做?

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

4

5 回答 5

4

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

  1. 添加一些到quickfix。例如:grep foo * /
  2. 类型:快速修复上的Qfreplace
  3. 根据需要更改线路。
  4. :w
于 2012-06-12T04:22:50.233 回答
2

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

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

:vimgrep pattern %

然后键入:cw以打开快速修复列表。

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

于 2012-06-12T04:40:02.620 回答
1

只要匹配的行跨越单个范围的连续行,NrrwRgn 插件就可以为您工作。

于 2012-06-11T15:20:19.393 回答
0

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

:g/a/t$

如果需要,您可以在“前”文档末尾设置标记:

:$mark a

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

:'a,$d | new | put!

以下方法也有效:您可以拉动,附加到寄存器a

:g/a/yank A

当然,您可能希望在开始之前清除寄存器 a:

:let @a=""
于 2012-06-11T16:59:48.567 回答
-1

g/../可以与类似的命令结合使用

:g/^a/ s/a/a.txt/

例如将每个“a”更改为“a.txt”。见':h:g'

于 2012-06-11T15:04:38.957 回答