所以我在vimrc中有以下几行,用jk滚动自动完成。
" Making autocompletion work with jk
inoremap <expr> j ((pumvisible())?("\<C-n>"):("j"))
inoremap <expr> k ((pumvisible())?("\<C-p>"):("k"))
我想知道是否有办法使用:tabe<Tab>
和h
滚动浏览l
个建议?这对我来说似乎是最自然的,但是我还没有找到任何关于如何做到的事情。
答案 0 :(得分:1)
使用命令行完成时,无论是否使用wildmenu
以及为wildmode
设置的值,您的光标都会停留在命令行中,并且您插入的任何可打印字符都包含在内,包括当然,h
和l
。
考虑到这一点,你真的认为放弃在命令行中插入h
和l
的能力是明智的吗?
如果您不喜欢<Tab>
,可以尝试wildchar
选项,但无法删除或替换<C-n>
/ <C-p>
和箭头
此外,命令行完成是一项通用功能,不仅限于:tabe
。 :tabe
是一个红鲱鱼,在这里。
答案 1 :(得分:0)
重新映射h
和l
对我来说很奇怪。它们非常有用,至少你需要它来编写,输入命令等......
如果您想要一个简单的自动完成提示,您应该在vimrc中添加这些行:
set wildmenu
set wildmode =list:longest,list:full
然后添加SuperTab功能,它允许您使用Tab
自动完成,并使用Tab导航到菜单。这是代码:
imap <Tab> <C-R>=SuperTab()<CR>
function! SuperTab()
if (strpart(getline('.'),col('.')-2,1)=~'^\W\?$')
return "\<Tab>"
else
return "\<C-n>"
endif
endfunction
希望它有所帮助!