有没有一种方法可以在vim中使用getchar()而不需要在每个输入键之后按Enter键?

时间:2020-10-28 15:28:06

标签: vim vim-plugin getchar

我正在编写一个vim插件,并使用getchar()来获取输入键,但是实际上这需要我双击要输入的每个键。我的最终目标是像键盘记录程序那样获得键盘输入,但是仅对于vim如此,这样之后我就可以分析数据了。

无法从https://vim.fandom.com/wiki/Wait_for_user_input_(getchar)_without_moving_cursor的工作中提出建议。

这是我插件中的一段代码:

function! s:getchar()
  let chr = getchar()
  if chr =~ '^\d\+$'
    let chr = nr2char(chr)
  endif
  python3 sample.gather()
endfunction

au CursorMoved * call s:getchar()

到目前为止,我仅使用python将时间戳记放在按下的键旁边。

我对此主题进行了相当多的研究,但是无法找到有关如何在vim中正确利用getchar()的解决方案。

1 个答案:

答案 0 :(得分:1)

“我的最终目标是像键盘记录程序那样获取键盘输入,但仅对于vim如此,这样之后我就可以分析数据了。”

Vim有一个选项-w {scriptout},用于将按键记录到文件{scriptout}

为了将原始数据转换为人类可读的表示形式,我实现的an example中有Python vimgolf client

用Ruby实现的official vimgolf client也利用Vim的-w选项来记录按键。

我知道这不能回答有关getchar()的特定问题,但是我认为,鉴于上述最终目标,这可能是一种解决方法。