Vim'de sekmeler arasında nasıl hızlı bir şekilde geçiş yapabilirim?


126

Gnome-terminalde, sadece basarak Alt(+ 1, 2, 3spesifik sekme geçmek için, vb.) Ayrıca sekmeler arasında dolaşmak için Ctrl+ ( PgUp/ PgDn) kullanabilirim (kuşkusuz daha az uygun, ancak yeniden gönderilebilir).

Ben vim sekmeleri yerine gnome-terminal sekmeler, yazarak kullanmak istiyorsanız :tabnve :tabpoldukça zahmetlidir. Onları klavye kısayollarıyla eşleştirebilirdim, ancak bu hala Alt+ ile doğrudan sekme 4'e atlamaktan çok daha kolay 4.

Vim'deki sekmeler arasında geçiş yapmanın daha hızlı bir yolu var mı?

Yanıtlar:


209

Sonraki sekme: gt

Önceki sekme: gT

Numaralı sekme: nnngt


1
Yazabileceğimi biliyorum nnn g t, ama çabucak yapmak istiyorum , yani Alt + nnnveya Ctrl + nnn. Fakat Alt + nzaten cüce-terminal tarafından alınmış ve buna bağlanmanın Ctrl + nherhangi bir etkisi olmadığı görülmüştür.
Matthew

6
İşlev tuşlarının eşleştirilmesi ne durumda nnn g t? Örneğin, :map <F2> 2gt. <F1>GNOME tarafından sık sık yardım merkezine eşleştirilen bir sorun var . Ya da normal modda sık kullanmayan bazı anahtar seçebilir, virgül söylemek ve bu gibi map: :map , gt. Sonra 1,sizi sekme 1'e, 2,sekme 2'ye vb. Götürür.
garyjohn

2
'<' Ve '>' kullanmayı çok uygun buldum
Igor Stoppa

Daha iyi bir cevap için aşağı kaydırın ..
Vivandiere 09.06.2016

41

Neden liderinizden faydalanmıyorsunuz (liderim haritalandırılmış 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>

Mevcut ve son etkin sekmesi arasında geçiş yapmak için aşağıdaki ayarları kullanabilirsiniz (burada eşleştirilmiş Ctrl+ Lyani <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
İhtiyacınız au TabLeave * let g:lasttab = tabpagenr()için c-lçalışmak: stackoverflow.com/questions/2119754/...
Ciro Santilli新疆改造中心法轮功六四事件

1
Ben eklemek istiyorum <leader>h/liçin gTvegt
Brenden

25

Bu, sekmeler arasında daha hızlı ve basit geçiş yapmak için bulduğum en kolay yol.
.Vimrc'nize bir sonraki satır ekleyin ve tadını çıkarın, vim sekmeleriyle ilgili daha fazla püf noktası var .

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

Şimdi Ctrl sola ve Ctrl sağa gitmek için kullanabilirsiniz .

Veya sadece şunu kullanın: bir
1gtsekmeye gitmek, ikinci sekmeye
2gtgitmek, üçüncü sekmeye
3gtgitmek, vb ... şimdi fikriniz var.


Bence buradaki en iyi cevap bu. Olması çok uygun. Ben sadece sistemden bağımsız olmaları için OS X'teki sistem kilitlenmelerini etkisiz hale getirdim.
Léo Léopold Hertz 준영

1
Ok tuşlarını kullanmanız sizi yavaşlatacaktır. Onları devre dışı bıraktım
Sor ve Öğren

Evet ... En iyi cevap!
Vivandiere

Ne yazık ki "Ctrl" vmplayer'da bana sorun çıkardı, bu yüzden "Backspace" ve "Enter" tuşlarına geçtim.
Boris Däppen

Mac kullanıcıları: varsayılan Mission Control boşlukları klavye kısayollarını devre dışı bırakmanız gerekebilir: stackoverflow.com/questions/15719135/…
azatar

15

Mac'imdeyken ve MacVim kullanmıyordum (ancak bir terminal içindeki düz vim), terminale gönderilmeyen tuş kombinasyonlarında bazı zorluklar yaşadım.

Sekmeleri hızlı bir şekilde değiştirmenin en uyumlu (ve benim için en rahat) yolu Vim Wikia sitesinden geliyor .

Senin içinde yerleştirin .vimrcdosyası:

nnoremap H gT
nnoremap L gt

Şimdi Shift-h(sermaye H) ve Shift-l(sermaye L) sekmeler arasında hızlı bir şekilde geçiş ve kongre izler olacaktır hve lsola karşılık ve sağ düzenli qwerty klavyede vim.


Sezgisel ve sezgisel bu çözümü seviyorum. Ok tuşlarına gerek yok.
Ivan Ivković

Katılıyorum. Çok güzel bir çözüm
j sad

bu gerçekten sezgisel bir çözümdür. Teşekkür ederim!
LeOn - Han Li

2

(Ne yazık ki) vim , sekmeler arasında dolaşmak için CtrlPgDn/ kullanır PgUp. Kullanılabilir bir şeyi mapharitalamak tabn/ kullanmak için kullanmanız gerekir tabp.


2

Eğer gvim veya benzerini kullanıyorsanız (yani terminalin dışındaki bir şey), gnome-terminaltarif ettiğiniz davranışı taklit edebilirsiniz :

" 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>

Böylece alt-1ilk sekmeye, vb. alt-9Atlar . Ancak son sekmeye atlar (Chrome'da olduğu gibi).

Bunu sarmak isteyebilirsiniz if has("gui_running")(her ne kadar Neovim ile çalışmıyor gibi görünse de) veya bunu koymak isteyebilirsiniz .gvimrc.


2

Sekme gezinme kısayol tuşlarını etkinleştirmek için bunları .vimrc'ye ekleyin:

<ctrl-l> en son 2 sekme arasında geçiş yapmak;

<ctrl-j/k> son / sonraki sekmeye gitme;

<ctrl-t> yeni bir sekme aç.

" 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> - <Tab> 'in son geçiş sekmesi işleviyle eşlenmesi mümkün mü? Denedim nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>ve vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>şanssız.
zzeroo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.