Trong vim, làm thế nào tôi có thể nhanh chóng chuyển đổi giữa các tab?


126

Trong gnome-terminal, tôi chỉ có thể nhấn Alt+ ( 1, 2, 3, vv) để chuyển sang tab cụ thể. Tôi cũng có thể sử dụng Ctrl+ ( PgUp/ PgDn) để chuyển qua các tab (thừa nhận là ít thuận tiện hơn, nhưng nó có thể được ánh xạ lại).

Nếu tôi muốn sử dụng các tab vim thay vì các tab gnome-terminal, hãy gõ :tabn:tabpkhá cồng kềnh. Tôi có thể ánh xạ chúng tới các phím tắt, nhưng điều đó vẫn thuận tiện hơn rất nhiều so với việc chuyển trực tiếp sang tab 4 bằng Alt+ 4.

Có cách nào nhanh hơn để chuyển đổi giữa các tab trong vim không?

Câu trả lời:


209

Tab tiếp theo: gt

Tab trước: gT

Tab đánh số: nnngt


1
Tôi biết rằng tôi có thể gõ nnn g t, nhưng tôi muốn làm điều đó một cách nhanh chóng , tức là Alt + nnnhoặc Ctrl + nnn. Nhưng Alt + nđã được gnome-terminal thực hiện và ràng buộc với Ctrl + ndường như không có bất kỳ ảnh hưởng nào.
Matthew

6
Điều gì về ánh xạ các phím chức năng để nnn g t? Ví dụ :map <F2> 2gt. Có một vấn đề <F1>thường được ánh xạ bởi Gnome đến cơ sở trợ giúp của nó. Hoặc bạn có thể chọn một số phím bạn không sử dụng thường xuyên trong chế độ bình thường, nói dấu phẩy và ánh xạ nó như thế này : :map , gt. Sau đó 1,sẽ đưa bạn đến tab 1, 2,đến tab 2, v.v.
garyjohn

2
Tôi thấy rất thuận tiện khi sử dụng '<' và '>'
Igor Stoppa

Cuộn xuống để có câu trả lời tốt hơn ..
Vivandiere

41

Tại sao không sử dụng nhà lãnh đạo của bạn (nhà lãnh đạo của tôi được ánh xạ tới 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>

Bạn có thể sử dụng các cài đặt bên dưới để chuyển đổi giữa tab hoạt động hiện tại và cuối cùng (ở đây, nó được ánh xạ tới Ctrl+ L, tức 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
Bạn cần au TabLeave * let g:lasttab = tabpagenr()cho c-llàm việc: stackoverflow.com/questions/2119754/...
Ciro Santilli新疆改造中心法轮功六四事件

1
Tôi muốn thêm <leader>h/lcho gTgt
Brenden

25

Đây là cách dễ nhất mà tôi tìm thấy, để chuyển đổi giữa các tab nhanh hơn và đơn giản.
Thêm các dòng tiếp theo vào .vimrc của bạn và tận hưởng nó, nhiều thủ thuật hơn về các tab vim tại đây .

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

Bây giờ bạn có thể sử dụng Ctrl để đi bên trái và Ctrl bên phải.

Hoặc chỉ sử dụng:
1gtđể chuyển đến tab một,
2gtđể chuyển đến tab hai,
3gtđể chuyển đến tab ba, v.v ... bây giờ bạn đã có ý tưởng.


Tôi nghĩ rằng đây là câu trả lời tốt nhất ở đây. Rất thuận tiện để có. Tôi chỉ vô hiệu hóa các keybindings hệ thống trong OS X để làm cho chúng độc lập với hệ thống.
Léo Léopold Hertz

1
Sử dụng các phím mũi tên sẽ làm bạn chậm lại. Tôi đã vô hiệu hóa chúng
Hỏi và tìm hiểu

Yup ... Câu trả lời hay nhất!
Vivandiere

Đáng buồn là "Ctrl" đã cho tôi các vấn đề trong vmplayer, vì vậy tôi đã thay đổi thành các phím "Backspace" và "Enter".
Boris Däppen

Người dùng Mac: bạn có thể cần phải tắt các phím tắt bàn phím không gian Mission Control mặc định: stackoverflow.com/questions/15719135/
mẹo

15

Vì tôi đang sử dụng máy Mac và không sử dụng MacVim (nhưng đơn giản là vim trong một thiết bị đầu cuối), tôi đã gặp một số khó khăn với các tổ hợp phím không được gửi qua thiết bị đầu cuối.

Cách tương thích nhất (và đối với tôi thoải mái nhất) để nhanh chóng chuyển đổi các tab đến từ trang web Vim Wikia .

Đặt trong .vimrctệp của bạn :

nnoremap H gT
nnoremap L gt

Bây giờ Shift-h(viết hoa H) và Shift-l(viết hoa L) sẽ chuyển bạn nhanh chóng giữa các tab và tuân theo quy ước hltương ứng với trái và phải trong vim trên bàn phím qwerty thông thường.


Tôi thích giải pháp này, trực quan và giống như vim. Không cần phím mũi tên.
Ivan Ivković

Tôi đồng ý. Một giải pháp rất hay
j buồn

đây thực sự là một giải pháp trực quan Cảm ơn bạn!
LeOn - Han Li

2

(Thật không may) vim cũng sử dụng CtrlPgDn/ PgUpđể chuyển qua các tab. Bạn sẽ cần sử dụng mapđể ánh xạ tabn/ tabpđến một cái gì đó có thể sử dụng.


2

Nếu bạn đang sử dụng gvim hoặc tương tự (nghĩa là một cái gì đó bên ngoài thiết bị đầu cuối), bạn có thể bắt chước gnome-terminalhành vi bạn mô tả với:

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

Vì vậy, alt-1nhảy đến tab đầu tiên, v.v. Nhưng alt-9nhảy đến tab cuối cùng (như trong Chrome).

Bạn có thể muốn bọc cái này vào if has("gui_running")(mặc dù cái này dường như không hoạt động với Neovim), hoặc đặt cái này vào .gvimrc.


2

Thêm chúng vào .vimrc để bật các phím nóng điều hướng tab:

<ctrl-l> chuyển đổi giữa 2 tab gần đây nhất;

<ctrl-j/k> goto tab cuối cùng / tiếp theo;

<ctrl-t> mở một tab mới.

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


Có thể ánh xạ <Ctrl> - <Tab> sang chức năng tab chuyển đổi cuối cùng. Tôi đã thử nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>không gặp may.
zzeroo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.