我想使用vils 之类的东西作为 vim 缓冲区。
例子:
a
b
a
b
搜索“a” ( :g/a/
)
输出:
a
a
然后像普通缓冲区一样编辑输出。完成后,它应该将我的更改逐行映射回原始缓冲区。
我怎么做?
PS:我可能可以使用:%s/../../
或类似的东西,但它不会像它应该的那样舒服。(即使CTRL+F缓冲区中的完成会起作用。)
使用 Qfreplace http://github.com/thinca/vim-qfreplace
您正在谈论的功能听起来像occure
/narrow-to-region
在 emacs 中。
在 vim 中,您可以键入以下命令:
:vimgrep pattern %
然后键入:cw
以打开快速修复列表。
您可以使用鼠标单击或:cn
/:cp
进行导航以进行更改。
只要匹配的行跨越单个范围的连续行,NrrwRgn 插件就可以为您工作。
我通常将这些行复制到文档的末尾
:g/a/t$
如果需要,您可以在“前”文档末尾设置标记:
:$mark a
因此,现在您可以'a,$
像往常一样实际编辑文档的一部分,包括将其保存到其他地方:
:'a,$d | new | put!
以下方法也有效:您可以拉动,附加到寄存器a
:
:g/a/yank A
当然,您可能希望在开始之前清除寄存器 a:
:let @a=""
g/../
可以与类似的命令结合使用
:g/^a/ s/a/a.txt/
例如将每个“a”更改为“a.txt”。见':h:g'