2012-12-29 11 views
5

विम में एक टैब बंद करने के बाद, मैं इसे कैसे बना सकता हूं ताकि बाईं ओर वाला टैब स्वचालित रूप से दिखाया जा सके?vim स्वचालित रूप से टैब बंद करने के बाद बाएं टैब दिखाएं

एक टैब बंद करते समय डिफ़ॉल्ट टैब सही दिख रहा है, जो परेशान है क्योंकि आपके टैब के दाईं ओर नए टैब खुलते हैं। तो एक नया टैब खोलना और इसे बंद करना आपको एक अलग टैब पर छोड़ देता है।

उत्तर

1

मुझे शक है; ऐसा कोई रास्ता नहीं है जिसे मैं देख सकता हूं। यहां तक ​​कि एक ऑटो-कॉमांड ईवेंट भी नहीं है जिसे आप चालू कर सकते हैं (उदा। TabClose वह होगा जो आप चाहते हैं, लेकिन यह अस्तित्व में नहीं है)।

सबसे नज़दीक आपको मिलेगा शायद आपके पास कमांड या मैपिंग होगा, साथ ही साथ टैब को बंद करने, सामान्य मोड gT निष्पादित करेगा। (हो सकता है कि आप किसी फ़ंक्शन में फैंसी प्राप्त कर सकें और विंडोज़ की स्थिति का पता लगा सकें और इस प्रकार आप gT या नहीं चाहते हैं। इसके लिए थोड़ा और विचार और जांच की आवश्यकता होगी।)

आप निश्चित रूप से भी कर सकते हैं टैब के लिए एक और समाधान का उपयोग कर जांच; यहाँ कुछ कर रहे हैं:

  • उपयोग विभाजन खिड़कियों
  • वैकल्पिक फ़ाइल उपयोग फ़ाइलों के बीच (CTRL-] स्थानांतरित करने के लिए, CTRL-T वापस पाने के लिए) आगे बढ़
के लिए
  • उपयोग करें (CTRL-6 देखें) टैग ढेर
  • 3

    एक पैच add a 'tabcloseleft' option पर प्रस्तावित किया गया है; यह विम में एकीकृत होने के लिए टोडो सूची पर है (भविष्य में कुछ समय, जब ब्रैम के पास काम करने का समय होता है)।

    +0

    हां मेरी पैच है कि कई महीनों वापस शामिल किया। उम्मीद है कि यह इसे जल्द ही मुख्य लाइन में लाएगा। – willurd

    2

    एक विचार है: अगर पर नजर की घटनाओं संख्या में से एक कम तो पहले से रिकॉर्ड संख्या है तो जाहिर है यह कारण ट्रिगर किया गया था: हालांकि वहाँ कोई TabClose घटना है वहाँ TabEnter घटना है जो प्राप्त करने के लिए आप क्या चाहते हैं इस्तेमाल किया जा सकता है

    let s:prevtabnum=tabpagenr('$') 
    augroup TabClosed 
        autocmd! TabEnter * :if tabpagenr('$')<s:prevtabnum && tabpagenr()>1 
           \  | tabprevious 
           \  |endif 
           \  |let s:prevtabnum=tabpagenr('$') 
    augroup END 
    
    +0

    @CiroSantilli आपको वास्तव में यहां सभी उत्तरों को पढ़ना चाहिए। यह लिंक एक साल पहले ओपी द्वारा अपने उत्तर में पोस्ट किया गया था। – ZyX

    0

    यह उपयोगी लग रहा है:

    http://vim.wikia.com/wiki/Have_focus_on_left_tab_after_tabclose

    मुझे लगता है मैं यह करने के लिए थोड़ा इसे संशोधित करने जा रहा हूँ:

    ०१२३५१६४१०६१ बंद टैब को
    function! CloseSomething() 
        if winnr("$") == 1 && tabpagenr("$") > 1 && tabpagenr() > 1 && tabpagenr() < tabpagenr("$") 
         q | tabprev 
        else 
         q 
        endif 
    endfunction 
    cnoremap q<CR> :call CloseSomething()<CR> 
    

    तो अब :q मैं क्या चाहते हो जाएगा ...

    +0

    मुझे इस फ़ंक्शन और मैपिंग की अवधारणाएं पसंद हैं, लेकिन इसमें कमियां हैं।कुछ ऐसा करने के लिए अच्छा होगा जो 'छोड़ने', 'q!', 'Wq' को भी संभालता है। यहां तक ​​कि मीठा भी 'x',' ZZ' 'को संभाला जाएगा। मैंने कई बदलावों की कोशिश की और कुछ काम नहीं कर सका। –

    0

    महान सवाल है, थोड़ी देर के लिए के साथ संघर्ष किया यहाँ मेरी समाधान है।

    अपनी .vimrc फ़ाइल में निम्न जोड़ें। ध्यान दें कि मैं आदेशों :q और :Q

    " declare function for moving left when closing a tab. 
    function! TabCloseLeft(cmd) 
        if winnr('$') == 1 && tabpagenr('$') > 1 && tabpagenr() > 1 && tabpagenr() < tabpagenr('$') 
         exec a:cmd | tabprevious 
        else 
         exec a:cmd 
        endif 
    endfunction 
    
    " define :Q command 
    command Q call TabCloseLeft('q!') 
    
    " override default quit command 
    cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'Q' : 'q')<CR> 
    

    TabCloseLeft समारोह के लिए ऋण के लिए पुनः मानचित्रित है https://github.com/convissor/vim-settings/blob/master/.vimrc

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