2010-01-22 19 views
32

En Vim, ¿hay alguna manera de alternar rápidamente entre la pestaña actual y la última pestaña activa? Tipo de manera '' alterna entre la línea actual y la última línea activa. Plugins/asignaciones de teclado/vudú todo aceptable.Cambiar a la última pestaña activa en VIM

Respuesta

55

poner esto en su .vimrc:

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

Luego, en el modo normal, el tipo \tl para intercambiar a la pestaña que ha visto por última vez.

+0

¿es este solo gvim? ¿mac solo? Parece que no puedo hacerlo funcionar dentro de iterm2 en el mac (modo terminal vim only) –

+1

Para el diseño del teclado del Reino Unido, encontré este 'nmap más útil : exe" tabn ".g: lasttab ' .. Gracias @LucasOman –

+0

Lo mapeé a ' tt' pero esto funcionó como un encanto. Respuesta del campeón –

3

que usan tampones y no pestañas, pero soy capaz de cambiar entre la corriente y la última memoria intermedia usada de una :b#
fundamentos del uso de tampones son:

: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

La única razón por la que prefiero las pestañas sobre los búferes es que puedo reordenar las pestañas para agrupar archivos y encontrar cosas en una sesión grande más fácilmente. –

+2

AFAIK, también puedes usar Ctrl-6 (en vimspeak creo que se llama "C- ^") en lugar de ': b #' – akavel

+0

'' o 'ctrl'' shift' '6', de hecho, cambia al último buffer . Si escribe ': ls' y tiene al menos 2 búferes abiertos, verá el búfer con'% '(búfer actual) a la izquierda del nombre y otro búfer con' # '(último búfer) a la izquierda del nombre. Entonces, '' efectivamente hace ': b #'. De hecho, si ': echo @ #' verás el buffer anterior que visitaste. Además, si 'let @ # =" foo.bar "' modificará el comportamiento de '', ya que esa funcionalidad se basa en el registro ''#' ('@ #'). Supongo que la funcionalidad de 'b #' también se cambiará, pero no estoy seguro. – dylnmc

0

solucionar el problema potencial cuando una ficha se cierra :

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