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

时间:2009-12-02 02:04:48

标签: vim

我在vim中安装了pydiction字典,以便在部分键入命令后按Tab键时能够获得python命令列表。一切都运行正常,除了每次菜单出现时,除了列表中的每个命令之外还有一个文件名。如何从菜单中删除该文件名?

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

由于

1 个答案:

答案 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可能是一个非常慢的操作,但我没有注意到任何问题,除非字典文件中有数百个匹配。

希望这有帮助。