विम - कुंजी के लिए अंतिम शेल कमांड को मैप करें


10

क्या नेता-आर को मैप करने का कोई तरीका है जो पिछली कमांड को बैश करने के लिए भेजा जाता है?

उदाहरण के लिए, C फ़ाइलों के साथ काम करते समय मैं टाइप किए बिना vim से प्रोग्राम को संकलित और चलाना चाहूंगा:! या gcc।

मुझे पता है कि मैं विशिष्ट कमांड को कुंजी से बांध सकता हूं लेकिन यह अन्य प्रकार की फाइलों के लिए काम नहीं करेगा।

जवाबों:



1

संपादित करें: इंगो करकट का उत्तर बेहतर है। ... अगर यह स्वीकार नहीं किया गया (तो इसका मतलब है कि मैं नहीं कर सकता) मैं इस पोस्ट को हटा दूंगा।

यहाँ एक उपाय है। यह केवल अंतिम 100 कमांड को खोजता है, जाहिर है, आप इस नंबर को बदल सकते हैं (इतिहास अनुक्रमण -1 पर शुरू होता है, जो आपके द्वारा टाइप किया गया अंतिम कमांड है, इसलिए संख्या कम, आगे खोज की गई है)।

fun! LastCommand()
        let l:i = -1
        while l:i > -100
                let l:cmd = histget("cmd", l:i)
                if strpart(l:cmd, 0, 1) == "!"
                        let l:i = 1
                        execute l:cmd
                        break
                endif
                let l:i -= 1
        endwhile

        if l:i < 1 | echoerr "No command found" | endif
endfun
nnoremap <Leader>r :call LastCommand()<CR>

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