चुपचाप एक विम फ़ंक्शन को कॉल करें


25

मैंने थोड़ा Vim फंक्शन लिखा है जो कर्सर को करंट लाइन के पहले कैरेक्टर में ले जाता है। यदि कर्सर पहले वर्ण पर था, तो इसके बजाय कर्सर को पहले कॉलम में ले जाया जाता है।

" Jump to first character or column
noremap H :call FirstCharOrFirstCol()<cr>

:function! FirstCharOrFirstCol()
:  let current_col = virtcol('.')
:  normal ^
:  let first_char = virtcol('.')
:  if current_col == first_char
:    normal 0
:  endif
:endfunction

मैं इस फ़ंक्शन को चुपचाप कैसे कहूं? मैं इसके बजाय ': FirstCharOrFirstCol ()' कॉल को स्थिति पंक्ति में प्रदर्शित नहीं किया गया था। बस बदलने के लिए noremap H :silent call…पर्याप्त नहीं लगता है।


7
बस एक छोटा सा नोट: एक विमस्क्रिप्ट फ़ाइल (यानी *.vim) में, आपको कभी भी प्रमुख :पात्रों की आवश्यकता नहीं होती है ।
tommcdo

जवाबों:


34

आप मौन मानचित्र को परिभाषित करके चुपचाप फ़ंक्शन को कॉल कर सकते हैं:

noremap <silent> H :call FirstCharOrFirstCol()<cr>

अधिक जानकारी के लिए, देखें :h :map-<silent>। विशेष रूप से ध्यान दें कि यह केवल यह सुनिश्चित करेगा कि मैपिंग निष्पादित होने पर स्क्रीन पर कमांड गूंज नहीं है। :silentआदेश समारोह से ही उत्पादन को बंद करने के लिए किया जाता है (देखें :h :silent)।


1
एक अच्छा, :silentवह है जो मैं बाद में था। यह ध्यान देने योग्य है कि यदि आपके फ़ंक्शन में त्रुटियां हैं, तो भी आपको संदेश तब तक मिलेंगे जब तक आप उपयोग नहीं करते हैं !। मुझे नहीं पता था कि मैंने एक अमान्य स्थिति में कोड छोड़ दिया है और इसलिए मुझे लगा कि मैं :silentसही तरीके से उपयोग नहीं कर रहा था क्योंकि यह ईकोस को चुप नहीं कर रहा था और मैं आउटपुट में एक त्रुटि देख सकता था !!
जोनिरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.