विम में, मैं टैब के बीच जल्दी से कैसे स्विच कर सकता हूं?


125

GNOME टर्मिनल में, मैं सिर्फ दबा सकते हैं Alt+ ( 1, 2, 3, आदि) विशिष्ट टैब पर स्विच करने के। मैं टैब के माध्यम से साइकिल चलाने के लिए Ctrl+ ( PgUp/ PgDn) का उपयोग कर सकता हूं (आमतौर पर कम सुविधाजनक है, लेकिन इसे रीमैप किया जा सकता है)।

अगर मैं गनोम-टर्मिनल टैब के बजाय विम टैब का उपयोग करना चाहता हूं, तो टाइप करना :tabnऔर :tabpकाफी बोझिल है। मैं उन्हें कीबोर्ड शॉर्टकट के लिए मैप कर सकता था, लेकिन यह अभी भी Alt+ के साथ सीधे टैब 4 पर कूदने की तुलना में बहुत कम सुविधाजनक है 4

क्या विम में टैब के बीच स्विच करने का एक तेज़ तरीका है?

जवाबों:


209

अगला टैब: gt

पिछला टैब: gT

गिने टैब: nnngt


1
मुझे लगता है कि मैं टाइप कर सकते हैं पता है nnn g t, लेकिन मैं इसे क्या करना चाहते हैं जल्दी से , यानी Alt + nnnया Ctrl + nnn। लेकिन Alt + nपहले से ही सूक्ति-टर्मिनल द्वारा लिया गया है, और Ctrl + nकिसी भी प्रभाव के लिए बाध्यकारी नहीं लगता है।
मैथ्यू

6
मानचित्रण फ़ंक्शन कुंजियों के बारे में क्या nnn g t? जैसे :map <F2> 2gt,। समस्या यह <F1>है कि अक्सर गनोम द्वारा इसकी सहायता सुविधा के लिए मैप किया जाता है। या आप कुछ महत्वपूर्ण आप सामान्य मोड में अक्सर उपयोग नहीं करते चुन सकते हैं, अल्पविराम का कहना है, और इस तरह यह नक्शा: :map , gt। फिर 1,आपको टैब 1, 2,टैब 2 पर ले जाएगा , और इसी तरह।
गैरीजोन

2
मुझे '<' और '>' का उपयोग करना बहुत सुविधाजनक लगा
इगोर स्टोपा

एक बेहतर जवाब के लिए नीचे स्क्रॉल करें ..
विवान्द्रिएप

41

अपने नेता का उपयोग क्यों न करें (मेरे नेता को मैप किया गया है Space):

" Go to tab by number
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<cr>

आप वर्तमान और अंतिम सक्रिय टैब के बीच टॉगल करने के लिए नीचे की सेटिंग का उपयोग कर सकते हैं (यहां इसे मैप किया गया है Ctrl+ L, अर्थात <c-l>)

" Go to last active tab

au TabLeave * let g:lasttab = tabpagenr()
nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>
vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>

2
आप की जरूरत है au TabLeave * let g:lasttab = tabpagenr()के लिए c-lकाम करने के लिए: stackoverflow.com/questions/2119754/...
सिरो Santilli新疆改造中心法轮功六四事件

1
मैं जोड़ना होगा <leader>h/lके लिए gTऔरgt
Brenden

24

यह सबसे आसान तरीका है जो मुझे मिला, तेजी से और सरल टैब के बीच स्विच करने के लिए।
अगली पंक्तियों को अपने .vimrc में जोड़ें और इसका आनंद लें, यहाँ vim टैब के बारे में अधिक ट्रिक्स ।

nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>

अब आप Ctrl बाईं ओर और Ctrl दाईं ओर जाने के लिए उपयोग कर सकते हैं ।

या बस उपयोग करें:
1gtटैब एक
2gtपर जाने के लिए, टैब दो
3gtपर जाने के लिए, टैब तीन पर जाने के लिए, आदि ... अब आपके पास विचार है।


मुझे लगता है कि यह यहां सबसे अच्छा जवाब है। बहुत सुविधाजनक है। मैंने उन्हें सिस्टम को स्वतंत्र बनाने के लिए OS X में उन सिस्टम कीबाइंडिंग को निष्क्रिय कर दिया।
लेओ लेपोल्ड हर्ट्ज़ '14

1
तीर कुंजियों का उपयोग आपको धीमा कर देगा। मैंने उन्हें निष्क्रिय कर दिया है
पूछो और जानें 5

हाँ ... सबसे अच्छा जवाब!
द विवंडिएर सेप

अफसोस की बात है कि "Ctrl" ने मुझे vmplayer में समस्याएं दीं, इसलिए मैं "बैकस्पेस" और "एंटर" कीज़ में बदल गया।
बोरिस डैपेन

मैक उपयोगकर्ता: आपको डिफ़ॉल्ट मिशन कंट्रोल स्पेस कीबोर्ड कीबोर्ड शॉर्टकट को निष्क्रिय करने की आवश्यकता हो सकती है: stackoverflow.com/questions/15719135/…
azatar

15

जैसा कि मैं एक मैक पर हूं और मैकविम (लेकिन एक टर्मिनल के भीतर सादे विम) का उपयोग नहीं कर रहा हूं, मुझे कुंजी संयोजनों के साथ कुछ कठिनाई हुई है जो टर्मिनल के माध्यम से नहीं भेजे जा रहे हैं।

टैब स्विच करने के लिए सबसे अधिक अनुकूल (और मेरे लिए सबसे आरामदायक) तरीका जल्दी से विम विकिया साइट से आता है ।

अपनी .vimrcफ़ाइल में रखें :

nnoremap H gT
nnoremap L gt

अब Shift-h(राजधानी एच) और Shift-l(राजधानी एल) आप जल्दी से टैब के बीच स्विच, और परंपरा है कि इस प्रकार होगा hऔर lछोड़ दिया करने के लिए और अनुरूप सही एक नियमित रूप से QWERTY कीबोर्ड पर vim में।


मैं इस समाधान, सहज और विम की तरह प्यार करता हूँ। कोई तीर कुंजी की जरूरत है।
इवान इवकोविक्व

मैं सहमत हूँ। एक बहुत अच्छा समाधान
j दुख की बात है

यह वास्तव में एक सहज समाधान है। धन्यवाद!
LeOn - हान ली


2

यदि आप gvim या समान (अर्थात, टर्मिनल के बाहर कुछ) का उपयोग कर रहे हैं, तो आप उस gnome-terminalव्यवहार का अनुकरण कर सकते हैं जिसका आप वर्णन करते हैं:

" Map alt-x keys to jump to a tab
for i in range(1, 8)
  execute "nmap \<M-" . i . "> " . i . "gt"
endfor
nmap <M-9> :tablast<CR>

तो alt-1पहले टैब पर alt-9कूदता है , आदि लेकिन अंतिम टैब पर कूदता है (क्रोम में)।

आप इसे इसमें लपेटना चाह सकते हैं if has("gui_running")(हालांकि यह नियोविम के साथ काम नहीं करता है), या इसे इसमें डाल दें .gvimrc


2

टैब नेविगेशन हॉट कुंजियों को सक्षम करने के लिए .vimrc में इन्हें जोड़ें:

<ctrl-l> 2 सबसे हाल के टैब के बीच टॉगल करें;

<ctrl-j/k> गोटो पिछले / अगले टैब;

<ctrl-t> एक नया टैब खोलें।

" tab navigation: Alt or Ctrl+Shift may not work in terminal: " http://vim.wikia.com/wiki/Alternative_tab_navigation " Tab navigation like Firefox: only 'open new tab' works in terminal nnoremap <C-t> :tabnew<CR> inoremap <C-t> <Esc>:tabnew<CR> " move to the previous/next tabpage. nnoremap <C-j> gT nnoremap <C-k> gt " Go to last active tab au TabLeave * let g:lasttab = tabpagenr() nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr> vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>


क्या टैब फ़ंक्शन को अंतिम टॉगल करने के लिए <Ctrl> - <टैब> मैप करना संभव है। मैंने कोशिश की है nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>और vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>भाग्य के बिना।
ज़ेज़ेरू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.