打开窗口后获取用户输入

时间:2017-10-13 01:41:30

标签: vim vim-plugin neovim ctrlp

如何在打开新窗口(包含项目)后获得用户输入(以便我可以过滤某些项目)?我想要类似于CtrlPCtrlSpace的内容。我试着查看他们的代码,但未能确定他们在哪里做。

我调用它的方法是创建一个调用函数command的{​​{1}},它打开窗口并等待用户输入。

我已经尝试了一些变体(foo内的代码):

foo

botright split NewWindow
let input = input('>> ')

在打开新窗口之前,第一个总是给我输入。在它们两个中botright split NewWindow redraw! let input = input('>> ') 部分都没有出现(输入本身也没有)。他们如何做到这一点?有一堆>>来电?

(使用Neovim v0.2.0)

1 个答案:

答案 0 :(得分:1)

确定。看起来并不那么困难(出于某种原因,我在源代码中迷失了,无法看到它)。他们基本上一次得到一个字符并继续回应结果。

根据我的看法,CtrlP使用以下方法:

  • 重绘
  • 询问getchar()
  • 的角色
  • 将字符与累加器字符串连接起来
  • 回显字符串
  • 你想要
  • 循环

我的vimscript现在看起来像这样:

let str = ''
while s:some_stop_condition()
    redraw
    let c = getchar()
    let str = str . nr2char(c)
    echo str
endwhile