从正常模式打开完成弹出窗口
open a completion popup from normal mode
给了这个脚本(简化了软件包建议,原来的处理 )
function! CompleteImport()
let packages = ['java.util.Vector','java.lang.String']
call complete(col('.'),packages)
return ''
endfunction
inoremap <F8> import <C-R>=CompleteImport()<CR>
在插入模式下,您可以添加导入并在建议的包之间进行选择,按 F8
但我希望能够从正常模式进入弹出式选择
function! InsertImport()
exe "normal iimport \<C-R>=CompleteImport()\<CR>"
"this commented line would work too
"exe "normal i\<F8>"
endfunction
map <Leader>ji :call InsertImport()<CR>
所以从正常模式,ji
(代表java导入)如果找到的话,添加一个导入到光标下的单词
(移动到正确的位置不是问题所以我在这里省略)
到现在,ji
从弹出窗口添加第一个建议并存在插入模式
我试过 :startinsert
但没有成功。
查看 http://vimdoc.sourceforge.net/htmldoc/eval.html#:execute 有一个建议的代码:
:execute "normal ixxx\<Esc>"
但是最后的 Esc 根本不重要(至少对于我的 vim 安装)这对我来说完全一样:
:execute "normal ixxx"
如果我没有在文档上找到它,我认为这是不可能的。那么,可以停留在从函数调用的弹出窗口上吗?
其他感兴趣的文档:
http://vimdoc.sourceforge.net/htmldoc/various.html#:normal
http://vimdoc.sourceforge.net/htmldoc/insert.html#:startinsert
:startinsert
通常是正确的方法,但它确实将控制权交还给用户,因此您不能自动触发完成。
通过feedkeys()
函数,可以发送任意键"as if typed"。这允许您启动插入模式 和 触发完成:
function! InsertImport()
call feedkeys("iimport \<C-R>=CompleteImport()\<CR>", 't')
endfunction
nnoremap <Leader>ji :call InsertImport()<CR>
PS: You should use :noremap
也用于普通模式映射;它使映射不受重新映射和递归的影响。
给了这个脚本(简化了软件包建议,原来的处理
function! CompleteImport()
let packages = ['java.util.Vector','java.lang.String']
call complete(col('.'),packages)
return ''
endfunction
inoremap <F8> import <C-R>=CompleteImport()<CR>
在插入模式下,您可以添加导入并在建议的包之间进行选择,按 F8
但我希望能够从正常模式进入弹出式选择
function! InsertImport()
exe "normal iimport \<C-R>=CompleteImport()\<CR>"
"this commented line would work too
"exe "normal i\<F8>"
endfunction
map <Leader>ji :call InsertImport()<CR>
所以从正常模式,ji
(代表java导入)如果找到的话,添加一个导入到光标下的单词
(移动到正确的位置不是问题所以我在这里省略)
到现在,ji
从弹出窗口添加第一个建议并存在插入模式
我试过 :startinsert
但没有成功。
查看 http://vimdoc.sourceforge.net/htmldoc/eval.html#:execute 有一个建议的代码:
:execute "normal ixxx\<Esc>"
但是最后的 Esc 根本不重要(至少对于我的 vim 安装)这对我来说完全一样:
:execute "normal ixxx"
如果我没有在文档上找到它,我认为这是不可能的。那么,可以停留在从函数调用的弹出窗口上吗?
其他感兴趣的文档:
http://vimdoc.sourceforge.net/htmldoc/various.html#:normal http://vimdoc.sourceforge.net/htmldoc/insert.html#:startinsert
:startinsert
通常是正确的方法,但它确实将控制权交还给用户,因此您不能自动触发完成。
通过feedkeys()
函数,可以发送任意键"as if typed"。这允许您启动插入模式 和 触发完成:
function! InsertImport()
call feedkeys("iimport \<C-R>=CompleteImport()\<CR>", 't')
endfunction
nnoremap <Leader>ji :call InsertImport()<CR>
PS: You should use :noremap
也用于普通模式映射;它使映射不受重新映射和递归的影响。