tutorial texto salir pegar insertar español editar deshacer copiar buscar vim buffer

texto - vim linux



¿Cómo cierro un solo búfer(de muchos) en Vim? (9)

Abro varios archivos en Vim, por ejemplo, ejecutando

vim a/*.php

que abre 23 archivos.

Luego hago mi edición y ejecuto el siguiente dos veces

:q

Lo que cierra todos mis buffers.

¿Cómo puedes cerrar solo un buffer en Vim?


Aquellos que usen un búfer o un complemento de navegación de árbol, como Buffergator o NERDTree, necesitarán alternar estas divisiones antes de destruir el búfer actual; de lo contrario, enviará 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.


En lugar de navegar por la salida del comando: ls y eliminar (descargar, borrar ...) un búfer al especificar su número, encuentro que usar nombres de archivos a menudo es más efectivo.

Por ejemplo, después de abrir un par de archivos .txt para actualizar mis recuerdos de algún punto fino ... copie y pegue algunas líneas de texto para usar como una plantilla de clases ... etc. Yo escribiría lo siguiente:

:bd txt <Tab>

Tenga en cuenta que la cadena coincidente no tiene que estar al principio 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 inicialmente escribí sin tocar, listo para ser completado.

Aquí hay un ejemplo:

doc1.txt doc2.txt :bd txt

Podría retroceder sobre 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 Tabulador 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 hacer que mi comando: bd pase por la lista de coincidencias.

Naturalmente, este método también se puede utilizar para cambiar a un búfer dado mediante comandos tales como: b ..: sb .. etc.

Este enfoque es particularmente útil cuando se establece la opción Vim ''oculta'', porque la lista de búferes puede volverse bastante grande rápidamente, cubriendo varias pantallas y dificultando la detección del búfer en 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 es el resultado de la siguiente configuración, que elegí por coherencia para emular la finalización de bash:

:set wildmode=list:longest,full

A diferencia de usar 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 al búfer directamente en lugar de tener que buscar primero su número a través del comando: ls.


Qué tal si

vim -O a a

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 ...


Revise su ID de búfer usando: buffers

Verás una lista de buffers como

1 a.php 2 b.php 3 c.php

Si quieres eliminar b.php del búfer

:2bw

Si quieres eliminar / cerrar todos los buffers.

:1,3bw


Si esto no se hace obvio por las respuestas anteriores:

: bd cerrará el búfer actual. Si no quieres agarrar la lista de búferes.


También puede asignar el siguiente y el anterior a las teclas de función, lo que hace que recorrer los búferes sea muy fácil

map <F2> :bprevious<CR> map <F3> :bnext<CR>

de mi vimrc


Utilizar:

  • :ls - para listar buffers
  • :bd#n - para cerrar el búfer donde #n es el número del búfer (use ls para obtenerlo)

Ejemplos:

  • para borrar el buffer 2:

    :bd2


[EDIT: 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 buffers; las pestañas son los "diseños de ventana" de Vim]

Tal vez cambiar a usar pestañas?

vim -pa/*.php abre los mismos archivos en pestañas

gt y gT cambian las 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


Una palabra de precaución: "¡w no significa escribir sino borrarse!"

Más de manuales:

: bd

Descargue el búfer [N] (predeterminado: búfer actual) y elimínelo de la lista de búferes. 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 sabes lo que estás haciendo, también puedes usar: bw

: bw

Como |: bdelete |, pero realmente borra el búfer.