获取完成菜单内容:转储到缓冲区、从函数中提取或 return?

Get completion menu contents: dump to buffer, yank, or return from function?

是否可以通过某种方式在菜单本身之外获取完成弹出窗口的内容(对于给定的不完整字符串)?

不直接。您可以编写一个宏/函数来重复插入基本文本、触发完成,然后选择第一个、第二个、第三个等匹配到缓冲区,直到所有都完成。

或者使用模拟内置完成的库。我的 CompleteHelper plugin 就是这样做的。示例(对于缓冲区本地 <C-x><C-n> 完成):

:let matches = []
:let base = 'ma'
:call CompleteHelper#FindMatches(matches, '\<' . base . '\k\+', {'complete': '.'})
:echo matches
[{'word': 'matches'}, {'word': 'match'}, {'word': 'macro'}]