Vim 打开窗口后获取用户输入

Vim 打开窗口后获取用户输入,vim,vim-plugin,neovim,ctrlp,Vim,Vim Plugin,Neovim,Ctrlp,打开新窗口(包含项目)后,如何获取用户输入(以便过滤某些项目)?我想要类似于或的东西。我试图查看他们的代码,但未能确定他们在哪里执行 我调用它的方法是创建一个命令,该命令调用一个函数foo,该函数打开窗口并等待用户输入 我已经尝试过一些变体(code-insidefoo): 及 第一个总是在打开新窗口之前获取输入。在这两种情况下,>部分都不显示(输入本身也不显示)。他们是怎么做到的?有一堆getchar调用 (使用Neovim v0.2.0)正常。看起来并没有那么难(因为某种原因,我迷失在源代码

打开新窗口(包含项目)后,如何获取用户输入(以便过滤某些项目)?我想要类似于或的东西。我试图查看他们的代码,但未能确定他们在哪里执行

我调用它的方法是创建一个
命令
,该命令调用一个函数
foo
,该函数打开窗口并等待用户输入

我已经尝试过一些变体(code-inside
foo
):

第一个总是在打开新窗口之前获取输入。在这两种情况下,
>
部分都不显示(输入本身也不显示)。他们是怎么做到的?有一堆
getchar
调用


(使用Neovim v0.2.0)正常。看起来并没有那么难(因为某种原因,我迷失在源代码中,看不见它)。他们基本上一次得到一个字符,并不断重复结果

据我所见,使用以下方法:

  • 重画
  • 使用
    getchar()
  • 将字符与累加器字符串连接
  • 回音
  • 想循环就循环
我的vimscript现在如下所示:

let str = ''
while s:some_stop_condition()
    redraw
    let c = getchar()
    let str = str . nr2char(c)
    echo str
endwhile
botright split NewWindow
redraw!
let input = input('>> ')
let str = ''
while s:some_stop_condition()
    redraw
    let c = getchar()
    let str = str . nr2char(c)
    echo str
endwhile