我想使用像vils这样的东西用于vim缓冲区。
示例:
a
b
a
b
搜索“a”(:g/a/
)
输出:
a
a
然后编辑输出,就好像它是普通缓冲区一样。 当我完成后,它应该逐行将我的更改映射回原始缓冲区。
我该怎么做?
PS:我可以使用:%s/../../
或类似的东西,但它不会像它那样舒服。 (即使在 CTRL + F 缓冲区中完成也能正常工作。)
答案 0 :(得分:4)
使用Qfreplace http://github.com/thinca/vim-qfreplace
答案 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'