Vim:如何从缓冲区中的条目创建自动完成/选择器?

Vim:如何从缓冲区中的条目创建自动完成/选择器?

今天发现,如果您在 Textmate 中按下 Ctrl-Opt-Cmd-V,它会立即生成一个可爱的“选择器”对话框,允许您翻阅最近的剪贴板条目。它看起来与 VIM 中的 CTRL-P 和 -N 的工作方式非常相似,只是它显示整行而不是简单的单词对象。

这似乎在 VIM 中是可行的 — 它已经有一个充满条目的缓冲区(例如 YankRing 缓冲区),并且已经有一个选择器,但我想不出从哪里开始将这两者结合起来。有什么想法吗?

(我知道 YankRing 已经通过打开一个充满缓冲区内容的新窗口来实现这一点,但我想知道是否有办法做到这一点,而无需切换/关闭所有窗口/等等)

答案1

Vim 提供了两种用户定义的插入完成机制:用户定义完成和 Omni 完成。你可以在这里阅读有关它们的内容:

:help compl-function
:help compl-omni
:help complete-functions
:help 'completefunc'
:help 'omnifunc'

我自己从未使用过这些,但既然你问从哪里开始找,那就这样吧。你可能还想阅读本节,

:help ins-completion

了解 Vim 各种内置插入模式完成机制,这可能有助于您避免编写自己的机制。但是,我没有看到用于从剪贴板条目中进行选择的预定义机制。您可以通过使用查看:registers可用寄存器,然后使用 Ctrl-R 和寄存器名称插入所需寄存器的内容,从而从以前的删除中插入内容。请参阅

:help :register
:help registers
:help i_CTRL-R

答案2

我的回答可能有点 OT,但我更喜欢使用系统范围的剪贴板管理器,因为此功能在许多情况下都很有用。以下是我使用的,每个都有完全相同的键盘快捷键:

相关内容