![Vim:使用 Tab 键和 Autocomplpop 插件进行自动完成](https://linux22.com/image/1454892/Vim%EF%BC%9A%E4%BD%BF%E7%94%A8%20Tab%20%E9%94%AE%E5%92%8C%20Autocomplpop%20%E6%8F%92%E4%BB%B6%E8%BF%9B%E8%A1%8C%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90.png)
我使用 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>"
。