Vi/Vim 字典获取整行
Vi/Vim Dictionary Get Whole Line
我有一个字典文件用于在 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
感谢帮助。
您需要使用 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+xCTRL+u
有关详细信息,请参阅 :help i_^x
、:help 'completefunc'
和 :help complete-function
。
我有一个字典文件用于在 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
感谢帮助。
您需要使用 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+xCTRL+u
有关详细信息,请参阅 :help i_^x
、:help 'completefunc'
和 :help complete-function
。