Abro varios archivos en Vim, por ejemplo, ejecutando
vim a/*.php
que abre 23 archivos.
Luego hago mi edición y ejecuto lo siguiente dos veces
:q
que cierra todos mis tampones
¿Cómo puede cerrar solo un búfer en Vim?
Abro varios archivos en Vim, por ejemplo, ejecutando
vim a/*.php
que abre 23 archivos.
Luego hago mi edición y ejecuto lo siguiente dos veces
:q
que cierra todos mis tampones
¿Cómo puede cerrar solo un búfer en Vim?
Respuestas:
Una palabra de precaución: "¡w en bw no significa escritura sino que borra!"
Más de manuales:
: bd
Descargar el búfer [N] (predeterminado: búfer actual) y eliminarlo de la lista de búfer. Si se cambió el búfer, esto falla, a menos que se especifique [!], En cuyo caso se pierden los cambios. El archivo no se ve afectado.
Si sabe lo que está haciendo, también puede usar: bw
: bw
Me gusta |: bdelete |, pero realmente elimina el búfer.
:bw
si "sabes lo que estás haciendo", lo cual yo no, así que supongo que lo usaré :bd
.
:bd
) también se cierra la pestaña. Lo que probablemente quiere es :bd n .. [m]
o :n,mbd
para los números específicos o rango de números para cerrar, que se puede hacer sin mirar a los buffers
w
es la abreviatura de write
comando de acuerdo con el manual de Vim, además, no se menciona ningún "borrado". La descripción del comando ( help write
) comienza con "Escribir todo el búfer en el archivo actual".
w
en el bw
comando significa borrar que no está hablando sobre el w
comando. Se puso esta advertencia no para que la gente no creía que el bw
comando significaba buffer de escritura (que no significa aniquilación búfer.)
Si esto no se hace evidente por las respuestas anteriores:
: bd cerrará el búfer actual. Si no quieres tomar la lista de búfer.
:bd
solo cierra el búfer mientras que (lo que sea que eso signifique) mientras :bw
que también borrará todas las variables y REALMENTE lo eliminará del ls
búfer.
Verifique su identificación de búfer usando: búferes
verá una lista de buffers como
1 a.php
2 b.php
3 c.php
si quieres eliminar b.php del buffer
:2bw
si desea eliminar / cerrar todo de los buffers
:1,3bw
En lugar de examinar la salida del comando: ls y eliminar (descargar, borrar ...) un búfer especificando su número, encuentro que usar nombres de archivos es a menudo más efectivo.
Por ejemplo, después de abrir un par de archivos .txt para refrescar mis recuerdos de algún punto fino ... copie y pegue algunas líneas de texto para usar como una plantilla de tipo ... etc. Escribiría lo siguiente:
:bd txt <Tab>
Tenga en cuenta que la cadena coincidente no tiene que estar al comienzo del nombre del archivo.
Lo anterior muestra la lista de nombres de archivos que coinciden con 'txt' en la parte inferior de la pantalla y mantiene el comando: bd que escribí inicialmente intacto, listo para completar.
Aquí hay un ejemplo:
doc1.txt doc2.txt
:bd txt
Podría retroceder el bit 'txt' y escribir el nombre del archivo que deseo eliminar, pero cuando esto sea realmente conveniente es que no tengo que hacerlo: si presiono la tecla Tab por segunda vez, Vim completa automáticamente mi comando con el primer partido:
:bd doc1.txt
Si quiero deshacerme de este búfer en particular, solo necesito presionar Enter.
Y si el búfer que quiero eliminar es la segunda (tercera ... etc.) coincidencia, solo necesito seguir presionando la tecla Tab para que mi comando: bd recorra la lista de coincidencias.
Naturalmente, este método también se puede usar para cambiar a un búfer dado mediante comandos como: b ..: sb .. etc.
Este enfoque es particularmente útil cuando la opción Vim 'oculta' está configurada, porque la lista de búferes puede volverse bastante grande, cubrir varias pantallas y dificultar la detección del búfer particular que estoy buscando.
Para aprovechar al máximo esta función, probablemente sea mejor leer el siguiente archivo de ayuda de Vim y ajustar el comportamiento de la finalización de la línea de comandos de Tab en consecuencia para que se adapte mejor a su flujo de trabajo:
:help wildmode
El comportamiento que describí anteriormente resulta de la siguiente configuración, que elegí por razones de coherencia para emular la finalización de bash:
:set wildmode=list:longest,full
A diferencia del uso de números de búfer, el mérito de este enfoque es que generalmente recuerdo al menos parte de un nombre de archivo dado que me permite apuntar directamente al búfer en lugar de tener que buscar primero su número a través del comando: ls.
[EDITAR: esta fue una sugerencia estúpida de un tiempo que no conocía a Vim lo suficientemente bien. Por favor, no use pestañas en lugar de tampones; las pestañas son los "diseños de ventana" de Vim]
Tal vez cambiar a usar pestañas?
vim -p a/*.php
abre los mismos archivos en pestañas
gt
y gT
cambiar pestañas de un lado a otro
:q
cierra solo la pestaña actual
:qa
cierra todo y sale
:tabo
cierra todo menos la pestaña actual
vim-nox
paquete de Ubuntu tiene soporte para Ruby.
Aquellos que usan un búfer o un complemento de navegación de árbol, como Buffergator o NERDTree, deberán alternar estas divisiones antes de destruir el búfer actual; de lo contrario, enviarán sus divisiones a wonkyville
Yo suelo:
"" Buffer Navigation
" Toggle left sidebar: NERDTree and BufferGator
fu! UiToggle()
let b = bufnr("%")
execute "NERDTreeToggle | BuffergatorToggle"
execute ( bufwinnr(b) . "wincmd w" )
execute ":set number!"
endf
map <silent> <Leader>w <esc>:call UiToggle()<cr>
Donde " NERDTreeToggle
" en esa lista es lo mismo que escribir :NERDTreeToggle
. Puede modificar esta función para integrarla con su propia configuración.
:bdelete
o :bwipeout
. Mira mi respuesta .
Si desea cerrar un búfer sin destruir el diseño de su ventana (diseño actual basado en divisiones), puede usar un complemento como bbye . En base a esto, solo puede usar
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
O simplemente cree una asignación en su .vimrc
para un acceso más fácil como
:nnoremap <Leader>q :Bdelete<CR>
De la documentación del complemento :
- Cerrar y quitar el búfer.
- Mostrar otro archivo en esa ventana.
- Muestre un archivo vacío si no tiene otros archivos abiertos.
- No deje buffers inútiles [sin archivo] si decide editar otro archivo en esa ventana.
- Funciona incluso si un archivo está abierto en varias ventanas.
- Trabaja bien con varios exploradores de buffer y tabbars.
De la documentación del complemento :
Vim tiene dos comandos para cerrar un búfer:
:bdelete
y:bwipeout
. El primero elimina el archivo de la lista de búfer, borra sus opciones, variables y asignaciones. Sin embargo, permanece en el jumplist, por loCtrl-o
que lo lleva de regreso y vuelve a abrir el archivo. Si eso no es lo que quieres, usa:bwipeout
el equivalente de Bbye:Bwipeout
donde lo habrías usado:bdelete
.
vim -o a/*.php
(o-O
para usar ventanas verticales) y evitar la navegación del búfer: este es un excelente método para solo unos pocos archivos, pero con 23 archivos solo tendrán unas pocas líneas / columnas cada.