2010-11-15 13 views
9

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

मैं वास्तव में कोड के इस बिट प्रदान करता है कार्यक्षमता की तरह:

अद्यतन

यह काम कर रहा समझे। यह अनिवार्य रूप से आपको एक नया विम मोड बनाने देता है, उदाहरण के लिए आप दृश्य-मोड या डालने-मोड की तरह "विंडो-मोड" के ऊपर कोड को कॉल कर सकते हैं। बहुत शक्तिशाली सामान ... – stephenmm

उत्तर

8
+0

अच्छा यह आसान था! धन्यवाद। – stephenmm

+0

@stephen (और कोई और) - मुझे उत्सुकता है कि आप इनपुट के लिए उपयोगकर्ता को संकेत कैसे पेश कर रहे हैं जिसे getchar() के साथ पकड़ा जा सकता है। शायद मैं घना हूँ लेकिन यह मुझ पर कूद नहीं रहा है। –

+0

मैंने वास्तव में इसे अभी तक लागू नहीं किया है (और मैंने इसे अभी तक सही क्यों नहीं चिह्नित किया है) लेकिन ऐसा लगता है कि यह मेरे लिए काम करेगा। मैं आज रात बाद इसे लागू करने के लिए एक बदलाव प्राप्त करने की उम्मीद कर रहा हूं, इसलिए मैं आपको बता दूंगा। – stephenmm

संबंधित मुद्दे