我在vim中安装了pydiction字典,以便在部分键入命令后按Tab键时能够获得python命令列表。一切都运行正常,除了每次菜单出现时,除了列表中的每个命令之外还有一个文件名。如何从菜单中删除该文件名?
请仔细看看图片:http://www.uzbozor.com/uploads/vim.png (如果点击不起作用,请复制并粘贴链接)
由于
答案 0 :(得分:1)
我还没有成功地解决这个问题,但是有一个解决方法是编写一个自定义完成函数,它只是为了匹配字典文件:
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
然后只需定义set the completefunc:
setlocal completefunc=MyCompleteFunction()
然后用于插入模式完成(可以映射以替换当前的字典完成绑定)。
vimgrep可能是一个非常慢的操作,但我没有注意到任何问题,除非字典文件中有数百个匹配。
希望这有帮助。