Tôi muốn người dùng gọi chức năng của tôi và sau đó có chức năng yêu cầu người dùng nhập nhưng tôi không muốn người dùng phải nhập ' nhập 'sau khi nhập một chữ cái theo yêu cầu của hàm "input()". Ví dụ: người dùng có thể nhập các lệnh chữ cái như 'h', 'j', 'k', 'l' và mỗi chữ được gõ sẽ lặp lại chức năng của tôi cho đến khi người dùng nhập 'x' để thoát. Nếu tôi sử dụng "input()" thì người dùng sẽ phải nhập 'h <enter>
', 'j <enter>
' ...vim script "input()" chức năng không yêu cầu người dùng nhấn enter
Bất kỳ đề xuất nào về cách tôi có thể thực hiện việc này?
Nếu cần làm rõ thêm, vui lòng cho tôi biết.
CẬP NHẬT
Got nó làm việc:
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
Tôi thực sự thích các chức năng chút mã này cung cấp. Về cơ bản nó cho phép bạn tạo một chế độ vim mới, ví dụ bạn có thể gọi mã ở trên một "chế độ cửa sổ" giống như chế độ trực quan hoặc chế độ chèn. Công cụ khá mạnh ... – stephenmm