gpt4 book ai didi

vim - 如何从 VIM 字典菜单中删除文件名?

转载 作者:行者123 更新时间:2023-12-02 04:17:52 30 4
gpt4 key购买 nike

我已经在 vim 中安装了 pydiction 字典,这样当我在部分键入命令后按 tab 时,我就可以得到一个 python 命令列表。一切正常,除了每次显示菜单时,列表中的每个命令之外都有一个文件名。如何从菜单中删除该文件名?

请看图:http://www.uzbozor.com/uploads/vim.png
(如果点击不起作用,请复制并粘贴链接)

谢谢

最佳答案

我还没有设法非常优雅地解决这个问题,但是有一个解决方法是编写一个自定义完成函数,它只是简单地对字典文件进行 greps 匹配:

function! MyCompleteFunction( findstart, base )
if a:findstart
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '[A-Za-z_]'
let start -= 1
endwhile
return start
else
silent call DictGrep( a:base, 'path\to\dictionary\file' )
let matches = []
for thismatch in getqflist()
call add(matches, thismatch.text)
endfor
return matches
endif
endfunction

请注意,我已经定义了一个实际执行 vimgrep 的函数 DictGrep()。这样我就可以静默调用它,而不会被错误消息所困扰:
function! DictGrep( leader, file )
try
exe "vimgrep /^" . a:leader . ".*/j " . a:file
catch /.*/
echo "no matches"
endtry
endfunction

然后简单地定义设置完整函数:
setlocal completefunc=MyCompleteFunction()

然后用于插入模式完成(可以映射以替换您当前的字典完成绑定(bind))。

vimgrep 可能是一个相当缓慢的操作,但我没有注意到任何问题,除非字典文件中有数百个匹配项。

希望这可以帮助。

关于vim - 如何从 VIM 字典菜单中删除文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830221/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com