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