क्या मापदंडों के साथ मैपिंग बनाना संभव है?


11

मैंने कुछ मैपिंग बनाई हैं जैसे:

:nnoremap <buffer> <leader>xyzABC   :call SomeFunc('ABC')<CR>
:nnoremap <buffer> <leader>xyzDE    :call SomeFunc('DE')<CR>
:nnoremap <buffer> <leader>xyzFoo18 :call SomeFunc('Foo18')<CR>
:nnoremap <buffer> <leader>xyzBar22 :call SomeFunc('Bar22')<CR>

जो इच्छानुसार काम करता है।

मैं अब एक मैप-टेम्प्लेट बनाने की संभावना तलाश रहा हूं, जो मुझे अपने मैप के स्पष्ट निरर्थक भागों को निकालने की अनुमति देगा, कुछ इस तरह से

:nnoremap <buffer> <leader> xyz? :call SomeFunc(?)<CR>

ताकि मैं किसी भी मान को पैरामीटर के रूप में पास कर सकूं SomeFunc

क्या ऐसी कोई संभावना है?


7
आप उपयोग कर सकते हैं input()या getchar()। हालाँकि किसी पैरामीटर के लिए मैपिंग के बजाय कमांड का उपयोग करना अधिक सामान्य है।
पीटर रिंकेर

मैं पीटर की टिप्पणी से सहमत हूं; मैपिंग की तुलना में कमांड काम के लिए बेहतर हैं।
रोमन

जवाबों:


6

जैसा कि @ peter-rinckler ने कहा, यह संभवतः एक कमांड के साथ करना आसान है:

command! -nargs=* Xyz :call SomeFunc(<q-args>)

ऐसा करना संभव बनाता है (सामान्य मोड में)

:Xyz ABC

मुझे वास्तव में पसंद नहीं है input()क्योंकि आप उन प्रकार की चीजों को आसानी से दोहरा नहीं सकते हैं।


6

पीटर रिनकर की टिप्पणी के लिए धन्यवाद, मुझे इसका उत्तर मिल गया है:

:nnoremap <buffer> <leader> xyz :call SomeFunc(input('Param: '))<CR>

यहाँ एक और उदाहरण है: nnoremap <silent> <leader>tn :exe "tabn" nr2char(getchar())<cr> । विचार <leader>tn22 टैब पर जाने के लिए टाइप करने के लिए है।
जशा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.