2009-05-03 13 views
70

Uso Vim en pantalla. Funciono con el comandoNo se pueden cerrar muchos almacenamientos intermedios con un comando en Vim

vim <bigFolder> 

estoy en atascado, ya que no tiene sentido para cerrar cada búfer

:q 

Cómo se puede cerrar todas las memorias intermedias activas en Vim, por un comando en el interior ¿Empuje?

+0

Ni siquiera puedo usar el comando Ctrl-D para cerrar la pantalla, ya que estoy navegando en una carpeta. No ayuda cerrar Vim, ya que estoy en pantalla, todo queda de la última sesión. –

+2

Creo que has confundido los búferes con ventanas. : q or: quit cierra la ventana actual. Use: bd o: bdelete para descargar un buffer y eliminarlo de la lista de buffer. La respuesta de sunaku es la única en este punto que lo hizo bien :) – bryan

Respuesta

78

:qall o :qa se cerrarán todas las ventanas

+2

¡Muchas gracias! Salvaste mi día. Mi terminal sería inútil sin tu comando. –

+27

versión corta: qa –

+2

: qa es lo que OP quería, pero por supuesto también deja vim. Para gvim esto a menudo es indeseable cuando quieres cerrar completamente todo pero no perder tu ventana de GUI, por lo que es mejor utilizar una de las siguientes técnicas para cerrar todos los buffers sin salir. – Yetanotherjosh

5

Que no guarda los tampones sin embargo. Tal vez: ¡wqall! : ¡xall! es un poco mejor

16
:on 

se cerrarán todas las memorias intermedias excepto el que está editando actualmente (el cursor está dentro de este buffer).

:on! 

también cerrará los búferes modificados, pero estos se convertirán en búferes ocultos.

:ls 

se enumera todos los tampones con su estado (oculto, ...)

Un poco de ayuda:

:h only 
:h hidden-buffer 
:h ls 
+0

¡Gracias por tu respuesta! - - No puedo ver la diferencia entre la opción [!] Y sin ella. Todos mis búferes quedan ocultos por ambos comandos, incluso mis guardados. ¿Cómo puedes ver la diferencia? –

+1

Tomé esto de la ayuda de vim y tienes razón, no veo la diferencia entre los dos. – Oli

+0

Parece que es un error en el manual. ¿Sabes dónde está la errata del manual de Vim? No pude encontrarlo por Google. –

1

Si sucede conseguir VIM completamente atascado aún debe ser capaz de matarlo desde fuera de VIM.

  • Si usted es capaz de suspender VIM con CTRL + Z, entonces se puede matar con kill %vim
  • Si no puede suspender VIM usted debería ser capaz de encontrar su PID usando ps. El se puede matar:
$ ps -f -C vim 
UID  PID PPID C STIME TTY   TIME CMD 
nfellman 27273 7473 0 Jun24 pts/15 00:00:00 /nfs/iil/home/nfellman/vim/bin/vim a.pl 
nfellman 37213 23747 0 Jun23 pts/15 00:00:00 /nfs/iil/home/nfellman/vim/bin/vim b.pl 

Así que si quiero matar al VIM que está editando a.pl que puede hacer:

kill -9 27273 

Esto debería funcionar incluso en el interior de la pantalla

-3

:q!

siempre me funciona.

83

El comando :bufdo le permite ejecutar un comando en todos los búfers. En este caso, desea ejecutar :bufdo bdelete para cerrar todos los búferes abiertos de una vez.

+0

¿Por qué esto no funciona para mí? – hwjp

+3

Como bdelete acepta un rango, también puede hacer: 1,9999bd donde 9999 es solo un número lo suficientemente alto como para incluir plausiblemente cualquier número de búfer abierto. – Yetanotherjosh

65

: bd% (elete)

creo que esto es lo que le pide

+3

esta debería ser la respuesta correcta. – johannestroeger

+0

¿cómo aplicarías esto a solo un buffer? ': bd' tal vez? –

12

:on no cierra cualquier búfer.

Solo cierra las otras ventanas.

6

Esto no es exactamente lo que solicitó, pero lo siguiente puede dar un resultado deseado. Es:

  • hace que la pestaña actual la única pestaña abierta (:tabo)
  • hace que la ventana en la pestaña de la única ventana abierta (:only)
  • muestra la primera memoria intermedia en la ventana abierta (1 b)
  • elimina tampones enumerados 2 a 2000 (2,2000bd)

    :tabo | :only | 1 b | 2,2000 bd

En caso de tener más de 2000 búferes abiertos, ajústelos según corresponda.

Si simplemente desea eliminar todos los búferes, 1,2000bd debería hacer el trabajo, pero tenga en cuenta que se crearán búferes vacíos nuevos para todas las pestañas y ventanas abiertas.

+0

¡Agradable! Ni siquiera sabía que podías conectar comandos juntos en el modo de comando vim. +1 por eso. –

+1

No es realmente una "tubería" en este caso. El operador de "barra" simplemente le permite ejecutar múltiples comandos en una sola línea en Vim. [doc] (http://vimdoc.sourceforge.net/htmldoc/cmdline.html#:\bar) –

Cuestiones relacionadas