vim script функция «input ()», которая не требует, чтобы пользователь нажимал ввод

Я бы хотел, чтобы пользователь вызывает мою функцию, а затем выполняет запрос функции, но я не хочу, чтобы пользователю приходилось вводить "ввод" после ввода буквы, как того требует функция "input ()". Например, пользователь должен иметь возможность вводить однобуквенные команды, такие как «h», «j», «k», «l», и каждая набранная буква будет повторяться вокруг моей функции, пока пользователь не наберет «x» для выхода. Если я использую "input ()" тогда пользователю нужно будет ввести 'h ', 'j ' ...

Есть какие-нибудь предложения, как я могу это сделать?

Если требуются дополнительные пояснения, дайте мне знать.

ОБНОВЛЕНИЕ

Работает:

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
11
задан stephenmm 17 November 2010 в 03:09
поделиться