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


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.