2010-01-22 9 views
32

In Vim, c'è un modo per passare rapidamente dalla scheda attuale all'ultima scheda attiva? Il modo in cui "" passa dalla linea corrente all'ultima linea attiva. Plugin/tastiera mappings/voodoo tutti accettabili.Passa alla scheda last-active in VIM

risposta

55

mettere questo nel vostro Vimrc:

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

Poi, in modalità normale, tipo \tl per scambiare la scheda che avete visto l'ultima.

+0

è solo questo gvim? solo mac? Non riesco a farlo funzionare all'interno di iterm2 su mac (solo modalità terminal vim) –

+1

Per il layout della tastiera del Regno Unito, ho trovato questo più utile 'nmap : exe" tabn ".g: lasttab ' .. Grazie @LucasOman –

+0

L'ho mappato a ' tt' ma questo ha funzionato come un fascino. Risposta del campione. –

3

Io uso tamponi e non schede, ma sono in grado di passare tra la corrente e ultima tampone usate con :b#
Basics di utilizzare tamponi sono:

: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'unico motivo per cui preferisco le schede sui buffer è che posso riordinare le schede per raggruppare i file e trovare più facilmente le cose in una grande sessione. –

+2

AFAIK, puoi anche usare Ctrl-6 (in vimspeak credo sia chiamato "C- ^") invece di ': b #' – akavel

+0

'' o 'ctrl'' shift' '6', infatti, passa all'ultimo buffer . Se si digita ': ls' e si hanno almeno 2 buffer aperti, verrà visualizzato il buffer con'% '(buffer corrente) a sinistra del nome e un altro buffer con' # '(ultimo buffer) a sinistra del nome. Quindi, '' effettivamente fa ': b #'. Infatti, se tu ': ​​echo @ #' vedrai il buffer precedente che hai visitato. Inoltre, se si ometta @ # = "foo.bar" 'modificherà il comportamento di' ', poiché tale funzionalità si basa sul registro' '# '(' @ # '). Presumo che la funzionalità di 'b # 'sia modificata, ma non ne sono certo. – dylnmc

0

risolvere il problema potenziale quando una scheda viene chiusa :

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