Tenga en cuenta que puede abrir los archivos en ventanas Vim separadas usando vim -o a/*.php(o -Opara 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.
Cascabel el
1
@Jefromi: ¡Gracias por señalar eso! Nunca he usado la opción -o antes.
Léo Léopold Hertz 준영
Sobre el tema de las divisiones de ventanas. Si ya está en Vim y desea abrir otro archivo en una división: especialmente para horizontal: evsp para vertical.
Lanzafame
Respuestas:
558
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.
También la posibilidad de hacer ': M, Nbd' para cerrar los números de búfer M a N. O ': bd N1 N2 ...' donde N # es un número de búfer
nevado
61
El manual dice que solo se use :bwsi "sabes lo que estás haciendo", lo cual yo no, así que supongo que lo usaré :bd.
jberryman
1
Al principio estaba confundido: estaba abriendo una nueva pestaña para cerrar los búferes ... pero al cerrar el búfer en la pestaña (usando una línea recta :bd) también se cierra la pestaña. Lo que probablemente quiere es :bd n .. [m]o :n,mbdpara los números específicos o rango de números para cerrar, que se puede hacer sin mirar a los buffers
JonnyRaa
55
wes la abreviatura de writecomando 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".
amn
3
@amn También me confundí, pero quería decir que wen el bwcomando significa borrar que no está hablando sobre el wcomando. Se puso esta advertencia no para que la gente no creía que el bwcomando significaba buffer de escritura (que no significa aniquilación búfer.)
John
351
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.
Antes de encontrar: bd nunca tuvo ningún sentido para mí que la gente no tuviera problemas para hacer un: ls -> escanear en busca de número de documento -> descargar búfer por número. ¿Las personas realmente encuentran esto efectivo?
Svend
3
@Svend para un rango de buffers seguro, pero para uno solitario a: bd es probablemente más efectivo.
:bdsolo cierra el búfer mientras que (lo que sea que eso signifique) mientras :bwque también borrará todas las variables y REALMENTE lo eliminará del lsbúfer.
RedX
1
La respuesta de hhh a continuación es más detallada ...
103
Verifique su identificación de búfer usando: búferes
atajo para verificar la identificación del búfer: 2 CTRL-G
nevado
43
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
Esa fue una gran publicación, me inspiró a profundizar aún más, ¿has mirado wildmenu? Es similar a lustyjuggler (aunque más simple) pero está integrado (lo cual fue bueno para mí, porque lustyjuggler necesita +ruby, y el vim predeterminado para las naves oneiric de ubuntu -ruby).
Nate
@Nate: sí, estoy usando wildmenu para abrir archivos, pero cuando tienes muchos archivos en el proyecto, simplemente no se escala. Además, el vim-noxpaquete de Ubuntu tiene soporte para Ruby.
Leonid Shevtsov
1
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.
para esto, el complemento bbye es perfecto y conserva el diseño de su ventana cuando usa :bdeleteo :bwipeout. Mira mi respuesta .
Wolfson
0
Cerrar el búfer sin cerrar la ventana.
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 .vimrcpara un acceso más fácil como
Vim tiene dos comandos para cerrar un búfer: :bdeletey :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 lo Ctrl-oque lo lleva de regreso y vuelve a abrir el archivo. Si eso no es lo que quieres, usa :bwipeoutel equivalente de Bbye :Bwipeoutdonde 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.Respuestas:
Una palabra de precaución: "¡w en bw no significa escritura sino que borra!"
Más de manuales:
: bd
Si sabe lo que está haciendo, también puede usar: bw
: bw
fuente
: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 buffersw
es la abreviatura dewrite
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 elbw
comando significa borrar que no está hablando sobre elw
comando. Se puso esta advertencia no para que la gente no creía que elbw
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.
fuente
: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á dells
búfer.Verifique su identificación de búfer usando: búferes
verá una lista de buffers como
si quieres eliminar b.php del buffer
si desea eliminar / cerrar todo de los buffers
fuente
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:
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:
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:
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:
El comportamiento que describí anteriormente resulta de la siguiente configuración, que elegí por razones de coherencia para emular la finalización de bash:
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.
fuente
Utilizar:
:ls
- para enumerar buffers:bd#n
- para cerrar el búfer donde #n es el número del búfer (usels
para obtenerlo)Ejemplos:
para eliminar el búfer 2:
fuente
También puede asignar las teclas de función siguiente y anterior, haciendo que recorrer los buffers sea muy fácil.
de mi vimrc
fuente
Qué tal si
De esa manera, puede editar un solo archivo a su izquierda y navegar por todo el directorio a su derecha ... Solo un pensamiento, no la solución ...
fuente
[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ñasgt
ygT
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 actualfuente
wildmenu
? Es similar a lustyjuggler (aunque más simple) pero está integrado (lo cual fue bueno para mí, porque lustyjuggler necesita+ruby
, y el vim predeterminado para las naves oneiric de ubuntu-ruby
).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:
Donde "
NERDTreeToggle
" en esa lista es lo mismo que escribir:NERDTreeToggle
. Puede modificar esta función para integrarla con su propia configuración.fuente
:bdelete
o:bwipeout
. Mira mi respuesta .Cerrar el búfer sin cerrar la ventana.
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
O simplemente cree una asignación en su
.vimrc
para un acceso más fácil comoVentaja sobre vim's: bdelete y: bwipeout
De la documentación del complemento :
: bdelete vs: bwipeout
De la documentación del complemento :
fuente