2010-09-14 8 views
16

Cuando edito varios archivos muchas veces quiero ir y venir entre los últimos archivos editados. Sé acerca de : bn (ext) y : bp (revious) para alternar entre almacenamientos intermedios pero no mantienen el historial de los últimos archivos usados. En su lugar, usan el orden en que se abrieron los archivos. Por ejemplo, si abría los archivos en este ordenVim: Navegando a los búferes anteriores y siguientes en el historial de edición

A, B, C 

un mi historial de navegación sería

A, B, C, B 

continuación : bprevious en la última memoria intermedia (B) me enviaría a A. ¿Hay un comando o complemento que me enviaría a C? Sé de Ctrl-6, pero esto solo cambia entre los dos últimos buffers. Me gustaría ir y venir de varios buffers.

Respuesta

16

He estado queriendo la misma funcionalidad desde hace bastante tiempo ahora también. Tu pregunta me inspiró para finalmente hacer algo al respecto. Eche un vistazo a bufsurf, un pequeño complemento que proporciona la funcionalidad requerida. Proporciona al usuario dos comandos:

:BufSurfBack 

a navegar hacia atrás en la historia, y de manera similar:

:BufSurfForward 

para navegar hacia delante en la historia. Para cada ventana o pestaña, se guarda un historial de navegación por separado en la memoria. Por favor, avíseme si tiene algún problema, no tuve la oportunidad de probarlo extensamente todavía.

+0

Esto es increíble, ¡muchas gracias! ¡Funciona perfectamente! – lassej

+0

@Ton van den Heuvel ¡¡impresionante !! ¿Puedes restablecer de alguna manera la historia? Después de un tiempo, he acumulado un gran historial de archivos y quiero comenzar a trabajar en otra cosa. ¿Puedo borrar el historial o cerrar la ventana de alguna manera inteligente? – Cotten

+0

@Cotten, gracias! Restablecer no es posible hasta donde yo sé. Sin embargo, no es terriblemente difícil de implementar. Puede presentar un ticket o incluso enviar una solicitud de extracción :) https://github.com/ton/vim-bufsurf –

5

Echa un vistazo al plugin lustyjuggler buffer. Es increíble para esto. Mantiene los búferes en el último orden utilizado y los asigna a las teclas de fila de inicio para que pueda avanzar y retroceder rápidamente entre ellos.

http://www.vim.org/scripts/script.php?script_id=2050

Se puede ver que demos hacia el final de mi más reciente screencast vim eran voy entre topes: http://lococast.net/archives/185

+0

Hola Rick, gracias por la respuesta, pero estoy buscando una solución donde no tenga que cambiar a un modo diferente para moverme entre los buffers recientes. Idealmente, podría asignar Shift-H y Shift-L a las acciones anteriores y siguientes. – lassej

+1

@lassej: Solo encuentra los comandos del complemento que hacen lo que deseas, y asignalos a las teclas que quieres que se mapeen. – Cascabel

Cuestiones relacionadas