2010-02-10 15 views
15

Pensé que vim era todopoderoso hasta que quise deshacerme de los almacenamientos intermedios en la lista y reutilizarlos para otra cosa. Por ejemplo, si tengo¿Cómo puedo reasignar un número de memoria intermedia en VIM?

 
1 "f1.h" 
2 "f2.h" 
3 "f3.h" 
4 "f1.cpp" 
5 "f2.cpp" 
6 "f3.cpp" 

y quiero reemplazar f1.h - f3.h con algo más, pero en la misma secuencia de búfer:

 
1 "n1.h" 
2 "n2.h" 
3 "n3.h" 
4 "f1.cpp" 
5 "f2.cpp" 
6 "f3.cpp" 

no puedo encontrar la manera para hacerlo. Puedo hacer "1,3bd" y borrar buffers 1-3, o incluso "1,3bw" y borrarlos, pero no veo ninguna forma de reutilizar esos números sin reiniciar vim. El faq del buffer de vim en http://vim.wikia.com/wiki/Vim_buffer_FAQ parece confirmar esto.

Pero no quiero creer que vim realmente tenga esta limitación, ¿realmente no hay forma de hacerlo desde dentro?

Respuesta

6

No puede reasignar números de memoria intermedia en la misma sesión. Su mejor apuesta es mirar alternativas de vimscript.

Un explorador de búfer que maneja la clasificación de los archivos usados ​​más recientes (y puede eliminar los búferes) es Buffer Explorer/Browser.

Hay muchos otros scripts de conmutación de búfer en vim.org que se adaptan a las distintas necesidades de sus autores. O, alternativamente, puede hacer las suyas con algunas asignaciones.

Se me ocurrió esto para Django.

http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings

Me da rápida de dos/tres pulsaciones de teclas de acceso 20 archivos estándar llamado en relación con un directorio de aplicación. Podría proponer algo para su proyecto en estas líneas.

Mis asignaciones son \1, \2, \3 etc. por lo que el paradigma numérico todavía está allí.

También mapeados \vr para ~/.vimrc y \br para ~/.bashrc.

Lo importante que puede y debe ser un proceso muy eficiente.

+0

Su script de mapeo \ 1, \ 2, \ 3 indica el camino hacia la respuesta que estoy buscando y, si no veo nada mejor, lo aceptaré. Si este enfoque se extendiera sistemáticamente para crear asignaciones para todos los archivos en el búfer, en una secuencia deseada, entonces esta sería una alternativa aceptable para cambiar a cualquier archivo por número de búfer, especialmente si se utiliza junto con un script que incluye los archivos en la misma secuencia numérica asignada. –

1

Yo recomendaría usar pestañas en su lugar (de vim 7). Puede moverlos libremente con tabm y abrir nuevos con tabe o tabnew. Además, es más obvio lo que está sucediendo. También puede iniciar vim con un grupo de pestañas abiertas usando -p (IIRC).

+1

Gracias por la sugerencia, pero una de las razones por las que prefiero los números de almacenamiento intermedio de las pestañas es que a menudo trabajo con docenas o cientos de archivos a la vez. En una sesión determinada, comienzo a recordar los archivos usados ​​con frecuencia por el número del buffer y los cambio rápidamente de un lado a otro. Eso no parece tan fácil de hacer con las pestañas. Sospecho que también es por eso que vim intenta mantener la persistencia de los números de buffer, pero si tengo que volver a cargar un bloque de buffers (como archivos de inclusión), me gusta mantenerlos en la parte superior. Ese es el problema que trato de resolver. –

2

Aquí está una manera perezosa para hacerlo (no requiere el aprendizaje de algo nuevo):

  • guardar la sesión en un archivo en el directorio de trabajo actual o donde quiera trabajar:
:mksession Session.vim 
  • Editar Session.vim. Busque la lista de búferes abiertos (líneas que comienzan con badd).

  • Reordene las líneas a su gusto.

  • Cerrar vim.

  • vim lanzamiento usando la bandera -S y el archivo de sesión:

$> gvim -S Session.vim 

Sus memorias intermedias se volverán a numerar secuencialmente en el orden en que se pone.

Cuestiones relacionadas