Я бы хотел, чтобы пользователь вызывает мою функцию, а затем выполняет запрос функции, но я не хочу, чтобы пользователю приходилось вводить "ввод" после ввода буквы, как того требует функция "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