Pregunta ¿Cómo trabajar efectivamente con múltiples archivos en Vim?


Empecé a usar Vim para desarrollar scripts Perl y estoy empezando a encontrarlo muy poderoso.

Una cosa que me gusta es poder abrir varios archivos a la vez con, p. vi main.pl maintenance.pl y luego saltar entre ellos con:

:n
:prev

y ver qué archivo están abiertos con

:args

Y para agregar un archivo, puedo decir:

:n test.pl

lo cual espero que se agregue a mi lista de archivos, pero en cambio borra mi lista de archivos actual y cuando escribo :args Yo solo tengo test.pl abierto.

Entonces, ¿cómo puedo AGREGAR y QUITAR archivos a mi lista args?


969
2017-09-10 09:03


origen


Respuestas:


¿Por qué no usar pestañas (introducido en Vim 7)? Puede cambiar entre pestañas :tabn y :tabp, Con :tabe <filepath> puedes agregar una nueva pestaña; y con un :q o :wq cierras una pestaña Si mapea :tabn y :tabp para usted F7/F8 teclas puede cambiar fácilmente entre archivos.

Si no hay muchos archivos o no tienes Vim 7, también puedes dividir tu pantalla en varios archivos: :sp <filepath>. Luego puede cambiar entre pantallas divididas con Ctrl+W y luego una tecla de flecha en la dirección que desea mover (o en lugar de las teclas de flecha, w para el próximo y W para splitscreen anterior)


1052
2017-09-10 09:09



Listado

Para ver una lista de los buffers actuales, uso:

:ls

Apertura

Para abrir un nuevo archivo, uso

:e ../myFile.pl

con la finalización de tabulación mejorada (poner set wildmenu en tus .vimrc)

Nota: también puedes usar :find que buscará un conjunto de rutas para usted, pero primero debe personalizarlas.


Traspuesta

Para cambiar entre todos los archivos abiertos, uso

:b myfile

con la finalización de pestañas mejorada (aún set wildmenu)

Nota: :b# elige el último archivo visitado, por lo que puede usarlo para cambiar rápidamente entre dos archivos.


Usando Windows

Ctrl-W s y Ctrl-W v para dividir la ventana actual horizontal y verticalmente. También puedes usar :split y :vertical split (:sp y :vs)

Ctrl-W w para cambiar entre ventanas abiertas, y Ctrl-W h (o j o k o l) para navegar a través de ventanas abiertas.

Ctrl-W c para cerrar la ventana actual, y Ctrl-W o para cerrar todas las ventanas, excepto la actual.

Iniciando vim con un -o o -O bandera abre cada archivo en su propia división.


Con todo esto no necesito pestañas en Vim, y mis dedos encuentran mis búferes, no mis ojos.

Nota: si desea que todos los archivos vayan a la misma instancia de Vim, inicie Vim con el --remote-silent opción.


492
2017-09-10 09:47



:ls

para la lista de búferes abiertos

  • :bp memoria intermedia anterior
  • :bn siguiente memoria intermedia
  • :bn (n un número) mover a n'th buffer
  • :b <filename-part> con la tecla de tabulación que proporciona la finalización automática (¡increíble!)

En algunas versiones de vim, bn y bp son en realidad bnext y bprevious respectivamente. Tab autocompletar es útil en este caso.

O cuando estás en modo normal, usa ^ para cambiar al último archivo en el que estaba trabajando.

Además, puedes guardar sesiones de vim

:mksession! ~/today.ses

El comando anterior guarda los búferes y las configuraciones de archivos abiertos actuales para ~/today.ses. Puedes cargar esa sesión usando

vim -S ~/today.ses

Sin complicaciones al recordar dónde lo dejaste ayer. ;)


202
2017-09-15 19:03



Para agregar a la args lista:

:argadd

Para eliminar de la args lista:

:argdelete

En tu ejemplo, podrías usar :argedit test.pl para agregar test.pl al args enumere y edite el archivo en un solo paso.

:help args da mucho más detalle y uso avanzado


96
2017-09-10 09:34



Yo uso comandos de buffer - :bn (siguiente memoria intermedia), :bp (memoria intermedia anterior) :buffers (lista de búferes abiertos) :b<n> (búfer abierto n) :bd (eliminar el buffer). :e <filename> se abrirá en un nuevo buffer.


45
2017-09-10 09:43



Creo que puede estar utilizando el comando incorrecto para mirar la lista de archivos que tiene abiertos.

Intenta hacer un :ls para ver la lista de archivos que tienes abiertos y verás:

   1 %a   "./checkin.pl"            line 1
  2 #    "./grabakamailogs.pl"     line 1
  3      "./grabwmlogs.pl"         line 0
  etc.

A continuación, puede revertir los archivos al referirse a ellos por los números enumerados, p. : 3b

o puede dividir su pantalla ingresando el número pero usando sb en lugar de simplemente b.

Como un lado% se refiere al archivo actualmente visible y # se refiere al archivo alternativo.

Puede alternar fácilmente entre estos dos archivos presionando Ctrl  Cambio  6

Editar: como :ls puedes usar :reg para ver el contenido actual de sus registros, incluidos los registros 0-9 que contienen lo que ha eliminado. Esto es especialmente útil si desea reutilizar algún texto que haya eliminado previamente.


36
2017-09-10 09:34



Vim (¡pero no el Vi original!) Tiene pestañas que encuentro (en muchos contextos) superiores a los buffers. Puedes decir :tabe [filename] para abrir un archivo en una nueva pestaña. El ciclo entre pestañas se realiza haciendo clic en la pestaña o mediante las combinaciones de teclas [norte]gt y gT. Graphical Vim incluso tiene pestañas gráficas.


30
2017-09-10 09:07



Cosas como :e y :badd solo aceptará UN argumento, por lo tanto, el siguiente error

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

Si desea agregar varios archivos desde vim, use arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*

23
2017-12-08 19:43



¡Muchas respuestas aquí! Lo que uso sin reinventar la rueda: los complementos más famosos (que no van a morir en el corto plazo y que son utilizados por muchas personas) son ultra rápidos y geek.

  • ctrlpvim / ctrlp.vim - para encontrar el archivo por nombre de búsqueda difusa por su ubicación o simplemente su nombre
  • jlanzarotta / bufexplorer - explorar los búferes abiertos (cuando no recuerdas cuántos archivos abriste y modificaste recientemente y no recuerdas dónde están, probablemente porque los buscaste con Ag)
  • rking / ag.vim para buscar los archivos con respecto a gitignore
  • scrooloose / nerdtree para ver la estructura del directorio, lookaround, agregar / eliminar / modificar archivos

ACTUALIZAR : Recientemente estoy usando dyng / ctrlsf.vim  para buscar con la vista contextual (como Búsqueda sublime) y cambié el motor de ag a ripgrep. El rendimiento es sobresaliente.


21
2018-03-31 11:47



Algunas respuestas en este hilo sugieren el uso de pestañas y otras sugieren utilizar el búfer para lograr lo mismo. Las pestañas y los tampones son diferentes. Le sugiero que lea este artículo Vim Tab locura - Buffers vs Tabs

Aquí hay un buen resumen que saqué del artículo:

Resumen:

  • Un buffer es el texto en memoria de un archivo.
  • Una ventana es una ventana gráfica en un buffer.
  • Una página de pestañas es una colección de ventanas.

15
2018-06-18 12:47



Cuando uso múltiples archivos en vim, utilizo estos comandos principalmente (con ~ 350 archivos abiertos):

  • :b <partial filename><tab> (saltar a un buffer)
  • :bw (limpieza de buffer, eliminar un buffer)
  • :e <file path> (editar, abrir un nuevo buffer>
  • pltags - Habilitar las definiciones de salto a subrutina / método

14
2017-09-15 17:15