我使用 Vim 的基本自动完成功能以及自动弹出插件,当我开始输入时,它会自动显示可用的补全。一旦我输入了足够的内容,将列表缩小到我想要的单词,我希望能够按 Tab 键来选择该补全。使用下面的脚本,需要按两次 Tab 键,而不是一次,我不知道为什么。
" Tab completion
" will insert tab at beginning of line,
" will use completion if not at beginning
set wildmode=list:longest,list:full
function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<tab>"
else
return "\<c-p>"
endif
endfunction
inoremap <Tab> <c-r>=InsertTabWrapper()<cr>
inoremap <S-Tab> <c-n>
答案1
使用return "\<c-y>"
而不是return "\<c-p>"
。
答案2
下面的功能完成了工作
set wildmode=list:longest,list:full
function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<tab>"
else
return "\<c-p>"
endif
endfunction
inoremap <expr> <tab> InsertTabWrapper()
inoremap <s-tab> <c-n>
答案3
使用return "\<c-n>"
而不是return "\<c-p>"
。