Chciałbym, aby użytkownik zadzwonił do mojej funkcji, a następnie miałby funkcję żądania wprowadzenia użytkownika, ale nie chcę, aby użytkownik musiał wpisać " wpisz "po wpisaniu litery zgodnie z wymaganiami funkcji" input() ". Na przykład użytkownik powinien mieć możliwość wpisywania jednoliterowych poleceń, takich jak "h", "j", "k", "l", a każda wpisana litera będzie pętlą wokół mojej funkcji, aż użytkownik wpisze "x" dla wyjścia. Jeśli użyję "input()", wówczas użytkownik będzie musiał wpisać "h <enter>
", "j <enter>
" ...vim skrypt Funkcja "input()", która nie wymaga, aby użytkownik wpuścił
Jakieś sugestie, w jaki sposób mogę to zrobić?
Jeśli potrzebujesz dodatkowych wyjaśnień, daj mi znać.
UPDATE
Got to działa:
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
bardzo podoba mi się ten kawałek funkcjonalności kodeksu przewiduje. Zasadniczo pozwala utworzyć nowy tryb vim, na przykład można nazwać kod powyżej "tryb okna", podobnie jak tryb wizualny lub tryb wstawiania. Całkiem potężne rzeczy ... – stephenmm