等待 vim 脚本中的用户输入并自动完成制表符
Waiting for user input in vim script with tab autocompletion
我想在 'execute' 中使用变量,然后使用用户输入完成命令。这必须与制表符自动完成一起使用。
这是我处理的函数:
function! VimFindRoot()
execute ':e ' . g:VimGrepFolder . '/**/'
endfunction
但是当它执行时,它不会等待用户输入。
如果我尝试直接在重映射上执行此操作:
noremap <C-i> ':e ' . g:VimGrepFolder . '/**/'
但它不会用变量值替换'g:VimGrepFolder',而是等待用户输入。
我知道 "input('', '')" 函数,但它不适用于制表符自动完成功能。
你知道我怎样才能像我这样工作吗?
您应该使用 <C-r>=expression
然后 <CR>
在命令行中插入 expression
。 expression
可以是一个变量,一个函数...
nnoremap <C-i> :edit <C-r>=g:VimGrepFolder<CR>/**/
见:h c_ctrl-r_=
。
我想在 'execute' 中使用变量,然后使用用户输入完成命令。这必须与制表符自动完成一起使用。
这是我处理的函数:
function! VimFindRoot()
execute ':e ' . g:VimGrepFolder . '/**/'
endfunction
但是当它执行时,它不会等待用户输入。
如果我尝试直接在重映射上执行此操作:
noremap <C-i> ':e ' . g:VimGrepFolder . '/**/'
但它不会用变量值替换'g:VimGrepFolder',而是等待用户输入。
我知道 "input('', '')" 函数,但它不适用于制表符自动完成功能。
你知道我怎样才能像我这样工作吗?
您应该使用 <C-r>=expression
然后 <CR>
在命令行中插入 expression
。 expression
可以是一个变量,一个函数...
nnoremap <C-i> :edit <C-r>=g:VimGrepFolder<CR>/**/
见:h c_ctrl-r_=
。