vim скрипт "input ()" функция, которая не требует от пользователя нажатия Enter - PullRequest
10 голосов
/ 16 ноября 2010

Я хотел бы, чтобы пользователь вызывал мою функцию, а затем запрашивал пользовательский ввод функции, но я не хочу, чтобы пользователь вводил «enter» после ввода буквы, как того требует функция «input ()»,Например, пользователь должен иметь возможность вводить однобуквенные команды, такие как «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 Ответ

9 голосов
/ 16 ноября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...