等待 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> 在命令行中插入 expressionexpression可以是一个变量,一个函数...

nnoremap <C-i> :edit <C-r>=g:VimGrepFolder<CR>/**/

:h c_ctrl-r_=