vim脚本“input()”函数,不需要用户输入

时间:2010-11-15 21:59:15

标签: vim

我想让用户调用我的函数然后让函数请求用户输入但是我不希望用户在输入“input()”函数所需的字母后输入'enter' 。例如,用户应该能够键入单个字母命令,如'h','j','k','l',并且每个键入的字母都会围绕我的函数循环,直到用户输入'x'表示退出。如果我使用“input()”,则用户必须输入“h <enter>”,“j <enter>”...

关于我如何能够做到这一点的任何建议?

如果需要进一步澄清,请告诉我。

更新

搞定了:

function! s:getchar()
  let c = getchar()
  if c =~ '^\d\+$'
    let c = nr2char(c)
  endif
  return c
endfunction

" Interactively change the window size
function! InteractiveWindow()
  let char = "s"
  while char =~ '^\w$'
    echo "(InteractiveWindow) TYPE: h,j,k,l to resize or a for auto resize"
    let char = s:getchar()
    if char == "h" | call SetWindowSize( "incr" ,-5 ,0 ) | endif
    if char == "j" | call SetWindowSize( "incr"  ,0 ,5 ) | endif
    if char == "k" | call SetWindowSize( "incr"  ,0 ,-5) | endif
    if char == "l" | call SetWindowSize( "incr"  ,5 ,0 ) | endif
    if char == "a" | call SetWindowSize( "abs"  ,0  ,0 ) | endif
    redraw
  endwhile
endfunction

1 个答案:

答案 0 :(得分:9)