Jak mogę szybko przełączać się między kartami?

125

Gnome-zacisku, można po prostu wcisnąć Alt+ ( 1, 2, 3, itd.), Aby przełączać się pomiędzy kartami. Mogę również używać Ctrl+ ( PgUp/ PgDn) do przechodzenia między kartami (co prawda mniej wygodne, ale można je odwzorować).

Jeśli chcę używać kart vim zamiast kart terminal-gnome, pisanie :tabni :tabpjest dość kłopotliwe. Mogę odwzorować je na skróty klawiaturowe, ale wciąż jest to o wiele mniej wygodne niż przejście bezpośrednio do karty 4 za pomocą Alt+ 4.

Czy istnieje szybszy sposób przełączania się między kartami w vimie?

Mateusz
źródło

Odpowiedzi:

209

Następna karta: gt

Poprzednia karta: gT

Karta numerowana: nnngt

efemeryczny
źródło
1
Wiem, że mógłbym pisać nnn g t, ale chcę to zrobić szybko , tj . Alt + nnnLub Ctrl + nnn. Ale Alt + njest już zajęty przez terminal gnome, a wiązanie się z nim Ctrl + nnie wydaje się mieć żadnego efektu.
Matthew
6
Co z mapowaniem klawiszy funkcyjnych nnn g t? Np :map <F2> 2gt. Istnieje problem <F1>często odwzorowywany przez GNOME na narzędzie pomocy. Albo można wybrać jakiś klawisz nie często wykorzystywaną w normalnym trybie, powiedzmy przecinek i map to tak: :map , gt. Następnie 1,przejdziesz do zakładki 1, 2,zakładki 2 i tak dalej.
garyjohn
2
Uważam, że bardzo wygodne jest używanie „<” i „>”
Igor Stoppa
Przewiń w dół, aby uzyskać lepszą odpowiedź ..
The Vivandiere 9.09.16
41

Dlaczego nie skorzystać z twojego lidera (mój lider jest zmapowany 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>

Możesz użyć poniższych ustawień, aby przełączać między bieżącą a ostatnią aktywną kartą (tutaj jest odwzorowana na Ctrl+ L, tj. <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>
nieuleczalny
źródło
2
Trzeba au TabLeave * let g:lasttab = tabpagenr()do c-lpracy: stackoverflow.com/questions/2119754/...
Ciro Santilli新疆改造中心法轮功六四事件
1
Chciałbym dodać <leader>h/ldo gTigt
Brenden
24

To najłatwiejszy sposób, jaki znalazłem, aby szybciej i łatwiej przełączać się między kartami.
Dodaj kolejne wiersze do .vimrc i ciesz się, więcej sztuczek na temat kart vim tutaj .

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

Teraz możesz użyć, Ctrl aby przejść w lewo i Ctrl w prawo.

Lub po prostu użyj:
1gtaby przejść do zakładki pierwszej,
2gtprzejść do zakładki drugiej,
3gtprzejść do zakładki trzeciej itp. Teraz masz pomysł.

Arnold Gandarillas
źródło
Myślę, że to najlepsza odpowiedź tutaj. Bardzo wygodne mieć. Właśnie wyłączyłem te systemowe skróty klawiszowe w OS X, aby były niezależne od systemu.
Léo Léopold Hertz
1
Użyj klawiszy strzałek, aby spowolnić. Mam ich niepełnosprawnych
Ask and Learn
Tak ... Najlepsza odpowiedź!
Vivandiere,
Niestety „Ctrl” sprawił mi problemy w vmplayer, więc zmieniłem na klawisze „Backspace” i „Enter”.
Boris Däppen
Użytkownicy komputerów Mac: może być konieczne wyłączenie domyślnych skrótów klawiszowych spacji Kontroli misji: stackoverflow.com/questions/15719135/…
azatar,
15

Ponieważ jestem na komputerze Mac i nie używam MacVima (ale zwykłego vima w terminalu), miałem pewne trudności z tym, że kombinacje klawiszy nie były przesyłane do terminala.

Najbardziej kompatybilny (i dla mnie najwygodniejszy) sposób szybkiego przełączania kart pochodzi z witryny Vim Wikia .

Umieść w swoim .vimrcpliku:

nnoremap H gT
nnoremap L gt

Teraz Shift-h(kapitał H) i Shift-l(kapitał L) a przejdziesz szybko między kartami i następuje konwencję, że hi lodpowiadać na lewo i prawo w vim na zwykłej klawiaturze QWERTY.

Stefan Magnuson
źródło
Uwielbiam to rozwiązanie, intuicyjne i podobne do vima. Nie są potrzebne klawisze strzałek.
Ivan Ivković
Zgadzam się. Bardzo fajne rozwiązanie
smutny
to naprawdę intuicyjne rozwiązanie. Dziękuję Ci!
LeOn - Han Li
2

(Niestety) vim używa również CtrlPgDn/ PgUpdo przełączania kart. Musisz użyć mapdo mapowania tabn/ tabpdo czegoś użytecznego.

Ignacio Vazquez-Abrams
źródło
2

Jeśli używasz gvim lub podobnego (tj. Czegoś poza terminalem), możesz naśladować gnome-terminalzachowanie, które opisujesz:

" 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-1Skacze więc do pierwszej karty itp. Ale alt-9skacze do ostatniej karty (jak w Chrome).

Możesz to owinąć if has("gui_running")(choć wydaje się, że to nie działa z Neovimem) lub włączyć .gvimrc.

Joe Freeman
źródło
2

Dodaj je do .vimrc, aby włączyć klawisze skrótu do nawigacji po kartach:

<ctrl-l> przełączaj między 2 najnowszymi kartami;

<ctrl-j/k> Mam ostatnią / następną kartę;

<ctrl-t> otwórz nową kartę.

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

Mengqi Ji
źródło
Czy możliwe jest mapowanie <Ctrl> - <Tab> na ostatnią funkcję tabulatorów Próbowałem nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>i vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>bez powodzenia.
zzeroo