我有一个用于在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
感谢您的帮助。
答案 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
。