Vi / Vim词典获得全线

时间:2016-09-24 03:36:19

标签: dictionary autocomplete vi

我有一个用于在VI中自动完成的字典文件。我知道我需要使用“CTRL + X,CTRL + K”进行搜索并自动完成单词或行。 示例文件dic。:

  

xi_x1_a1

     

xi_x1_a2

     

xi_x1_a3

     

xi_x1_a4

     

xi_x2_a4

     

xi_x1_a6

     

xi_x1_b

     

...

在Vi / Vim中,如果我输入:xi“CTRL + X,CTRL + k”,那么我将在光标处收到字典中的所有行。它没用,因为我的字典文件有很多行。

我怎样才能输入“a4,CTRL + x,CTRL + k”?然后我只在光标中得到两条匹配线,用于自动完成行。

  

xi_x1_a4

     

xi_x2_a4

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要使用completefunc。这允许您指定想要完成的方式。

如果你编辑~/.vimrc并输入类似的内容:

function! MyCompleteFunc(findstart, base)
  if (a:findstart == 1)
    normal b
    return col(".") - 1
  else
    " Hardcoded path to dictionary. You could tweak this to use
    " whatever dictionary you have set with `set dictionary=`
    let l:data = readfile("/home/david/mydic.txt")
    return filter(l:data, 'v:val =~ ".*' . a:base . '.*"')
  endif
endfunction

set completefunc=MyCompleteFunc

它应该成功。

然后你就可以使用了 CTRL + X CTRL + û

有关详细信息,请参阅:help i_^x:help 'completefunc':help complete-function