दर्ज करने की आवश्यकता नहीं है, मैं उपयोगकर्ता को अपना फ़ंक्शन कॉल करना चाहता हूं और उसके बाद फ़ंक्शन अनुरोध उपयोगकर्ता इनपुट है लेकिन मैं नहीं चाहता कि उपयोगकर्ता को ' "इनपुट()" फ़ंक्शन द्वारा आवश्यक एक अक्षर टाइप करने के बाद 'दर्ज करें। उदाहरण के लिए, उपयोगकर्ता को 'एच', 'जे', 'के', 'एल' जैसे एकल अक्षर कमांड टाइप करने में सक्षम होना चाहिए और टाइप किए गए प्रत्येक अक्षर को मेरे फ़ंक्शन के चारों ओर लूप होगा जब तक कि उपयोगकर्ता बाहर निकलने के लिए 'x' टाइप नहीं करता। अगर मैं "इनपुट()" का उपयोग करता हूं तो उपयोगकर्ता को 'एच <enter>
', 'जे <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
मैं वास्तव में कोड के इस बिट प्रदान करता है कार्यक्षमता की तरह:
अद्यतन
यह काम कर रहा समझे। यह अनिवार्य रूप से आपको एक नया विम मोड बनाने देता है, उदाहरण के लिए आप दृश्य-मोड या डालने-मोड की तरह "विंडो-मोड" के ऊपर कोड को कॉल कर सकते हैं। बहुत शक्तिशाली सामान ... – stephenmm