2011-01-29 13 views
5

मुझे एक विचार आया कि <C-a> विम के सामान्य मोड में न केवल संख्याएं बढ़ाना चाहिए बल्कि बुलियन बुलियन करना चाहिए। यह समझ में आता है अगर तुम true और false पर विचार के रूप में पूर्णांक सापेक्ष 2.विम के सामान्य मोड CTRL-A के लिए समानार्थी?

तो, मैं downloaded an excellent script बालों काम करने के लिए और <C-a> के लिए एक नई परिभाषा लिखा है:

fun! NewCA() 
    let cw = tolower(expand("<cword>")) 
    if cw == "true" || cw == "false" 
     ToggleWord 
    else 
     " run the built-in <C-a> 
     execute "normal \<C-a>" 
    endif 
endfun 
command! NewCA :call NewCA() 
nnoremap <C-a> :NewCA<cr> 

लेकिन के रूप में यह होता है, nnoremap नहीं करता ' जहां तक ​​अंदरूनी कार्यों की जांच करने के लिए जाना है। मुझे रिकर्सिव व्यवहार मिलता है यदि मेरा कर्सर true या false पर नहीं है।

इस बिंदु पर मैं बहुत कसम खाता हूं, ब्रैम इमाक्स से एक उत्कृष्ट विचार क्यों नहीं लेता था, कि सब कुछ कार्य और कुंजी बाइंडिंग मुक्त रूप से सेट करने योग्य होना चाहिए। तो मैं सिर्फ <C-a> के लिए फ़ंक्शन की जांच कर सकता हूं और उसे उस फ़ंक्शन में कॉल कर सकता हूं। लेकिन नहीं, मुझे ऐसा कोई फ़ंक्शन नहीं मिल रहा है, और execute "normal foo" वाक्यांश विम मुहावरे प्रतीत होते हैं।

कैसे मैं <C-a> काम कर सकता है पर कोई सुझाव ऐसा है कि

  • टॉगल बूलियन्स कर्सर को true या false
  • पतन वापस एक शब्द खत्म हो गया है जब में निर्मित <C-a> व्यवहार अन्यथा

मदद की सराहना की!

उत्तर

8

परिवर्तन

execute "normal \<C-a>"
के लिए: "!"

normal! ^A

आप सामान्य मोड में

<C-v><C-a>
चलाकर^एक प्राप्त कर सकते हैं

सामान्य कहते हैं "उपयोग डिफ़ॉल्ट मानचित्रण"

+0

दोनों जवाब एक ही है, सही समाधान है। मैंने इसे समुदाय में आपका स्वागत करने के लिए स्वीकृत उत्तर के रूप में चेक किया है। :) – progo

6

के अंत से :help :normal

:norm[al][!] {commands}  
... 
If the [!] is given, mappings will not be used. 
.... 

में भी परिभाषित आदेश की जरूरत है नहीं, तो आप कर सकते हैं सीधे

nnoremap <C-a> :call NewCA() 
+0

ओह, मुझे ऐसा नोब लगता है! मुझे दस्तावेज़ों को और सावधानीपूर्वक पढ़ने के लिए बेहतर जाना चाहिए था। बहुत धन्यवाद। असल में मेरे पास डीबगिंग उद्देश्यों के लिए अपर्याप्त 'कमांड! 'कथन था, और आप सही हैं। :) – progo

+0

नोट करें कि मानचित्र को अंतिम '' की आवश्यकता है: 'nnoremap : कॉल करें न्यूका() ' – radke

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