2010-01-22 71 views
32

Trong Vim, có cách nào để nhanh chóng chuyển đổi giữa tab hiện tại và tab hoạt động cuối cùng không? Sắp xếp cách '' chuyển đổi giữa dòng hiện tại và dòng hoạt động cuối cùng. Plugins/bàn phím ánh xạ/voodoo tất cả chấp nhận được.Chuyển sang tab hoạt động cuối cùng trong VIM

Trả lời

55

Đặt này trong vimrc của bạn:

let g:lasttab = 1 
nmap <Leader>tl :exe "tabn ".g:lasttab<CR> 
au TabLeave * let g:lasttab = tabpagenr() 

Sau đó, trong chế độ bình thường, loại \tl để trao đổi với các tab bạn xem trước.

+0

chỉ là gvim này? mac chỉ? Tôi không thể có vẻ để làm cho nó làm việc bên trong iterm2 trên mac (terminal vim chế độ chỉ) –

+1

Đối với bố trí bàn phím Anh, tôi thấy điều này có thể sử dụng hơn 'nmap : exe" tabn ".g: lasttab ' .. Thanks @LucasOman –

+0

Tôi đã ánh xạ nó thành ' tt' nhưng điều này hoạt động như một sự quyến rũ. Câu trả lời của nhà vô địch. –

3

tôi sử dụng bộ đệm và không tab, nhưng tôi có thể chuyển đổi giữa hiện tại và đệm đã qua sử dụng mới nhất sử dụng :b#
Khái niệm cơ bản của việc sử dụng bộ đệm là:

:e filename to open file in new buffer 
:bn to go to next buffer 
:bp to go to previous buffer 
:bd to close current buffer 
+2

Lý do duy nhất tôi thích các tab trên bộ đệm là tôi có thể sắp xếp lại các tab để nhóm các tệp lại với nhau và tìm mọi thứ trong một phiên lớn dễ dàng hơn. –

+2

AFAIK, bạn cũng có thể sử dụng Ctrl-6 (vimspeak mà tôi tin là "C- ^") thay vì ': b #' – akavel

+0

'' hoặc 'ctrl'' shift' '6', thực sự, chuyển sang bộ đệm cuối cùng . Nếu bạn gõ ': ls' và bạn có ít nhất 2 bộ đệm mở, thì bạn sẽ thấy bộ đệm với'% '(bộ đệm hiện tại) ở bên trái tên và một bộ đệm khác với' # '(bộ đệm cuối) bên trái của tên. Vì vậy, ' 'có hiệu quả': b # '. Trong thực tế, nếu bạn ': echo @ #' bạn sẽ thấy bộ đệm trước mà bạn đã truy cập. Ngoài ra, nếu bạn 'cho phép @ # =" foo.bar "' nó sẽ sửa đổi hành vi của '', vì chức năng đó dựa vào thanh ghi ''#' ('@ #'). Tôi đoán rằng chức năng của 'b #' cũng sẽ được thay đổi, nhưng tôi không chắc chắn. – dylnmc

0

Khắc phục sự cố tiềm năng khi một tab bị đóng :

" Switch to last-active tab 
if !exists('g:Lasttab') 
    let g:Lasttab = 1 
    let g:Lasttab_backup = 1 
endif 
autocmd! TabLeave * let g:Lasttab_backup = g:Lasttab | let g:Lasttab = tabpagenr() 
autocmd! TabClosed * let g:Lasttab = g:Lasttab_backup 
nmap <silent> <Leader>` :exe "tabn " . g:Lasttab<cr> 
Các vấn đề liên quan