Vim - 如何在命令行模式下自动完成缓冲区内容

5

应用场景:我有一个缓冲区

variable1
variable2
variable3

我想使用以下方法将 variable1 替换为 variable3

:%s/vari<TAB>/vari<TAB><TAB><TAB>

有没有什么方法可以实现这个?我不想手动输入或复制单词。


1
https://vi.stackexchange.com/ - Rob
正如Rob所提到的,如果有关Vim的问题,请考虑使用[vi.se],这是一个专门用于Vi / Vim / NeoVim问题的Stack Exchange。 - filbranden
@filbranden,我认为在使用vim标签时,在Stack Overflow上提出与vim相关的问题是没有问题的。 - Stun Brick
2个回答

3

1
哦,太棒了!正是我在寻找的!令人惊讶的是,它在11年后仍然能够工作(Plug 'vim-scripts/cmdline-completion')。 - Dylanthepiguy

1
您可以使用命令行窗口(参见:help cmdline-window)来使用常规插入模式编写Ex命令行,例如:s
您可以从Normal模式使用q:访问命令行窗口,也可以在Ex命令行中使用Control+F(在键入:并开始编写命令之后,例如:%s/vari...)
进入命令行窗口后,您可以使用i(或aA等)进入插入模式,然后可以使用通常的完成按键,例如Control+NControl+P,以从其他可见缓冲区的内容完成。
完成:%s命令后,您可以直接按Return,将命令从命令行窗口执行为常规Ex命令。

1
做法很有趣!我猜下一步是让缓冲区自动完成在命令面板内起作用。它对你有效吗?不知道是不是我的设置出了问题。 - Dylanthepiguy
@Dylanthepiguy 是的,对我来说使用Ctrl+N和Ctrl+P可以工作。Vim没有启用任何插件。不确定您是否有一些自动完成插件可能会钩入这些按键? - filbranden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接