¿Cómo puedo editar múltiples archivos en VIM?


Respuestas:


172

En primer lugar, en vim puede ingresar :(dos puntos) y luego ayudar help, ala :helppara obtener una lista de temas de autoayuda, incluido un breve tutorial. Dentro de la lista de temas, mueva el cursor sobre el tema de interés y luego presione ctrl]y se abrirá ese tema.

Un buen lugar para comenzar sería el tema

|usr_07.txt|  Editing more than one file

Ok, a tu respuesta.

Después de iniciar vim con una lista de archivos, puede pasar al siguiente archivo ingresando :nexto :npara abreviar. :wnextes la abreviatura de escribir los cambios actuales y luego pasar al siguiente archivo.

También hay un análogo :previous, :wpreviousy :Next. (Tenga en cuenta que :pes la forma abreviada de :print. La forma abreviada de :previouses :prevo :N.)

Para ver dónde se encuentra en la lista de archivos, ingrese :argsy el archivo que se está editando aparecerá entre []paréntesis.

Ejemplo:

vim foo.txt bar.txt
:args

resultado:

[foo.txt] bar.txt

25
: wn es la forma abreviada de: wnext.
Kowh

También puede hacer: rew para volver al primer archivo. : e # intercambia entre 2 archivos. :¡norte! va al siguiente archivo sin escribir. También mira: establecer autowrite.
Sasquiha

44
Con respecto a múltiples buffers / windows / tabs también vea StackOverflow's ¿Cómo trabajar efectivamente con múltiples archivos en Vim? y Usar las pestañas de Vim como amortiguadores .
mmoya

1
También encontré muy útil el capítulo 22 "Encontrar el archivo para editar". Se utiliza el explorador de directorios para editar los archivos que desea.
Harry Moreno

: wn impresionante.
rammayur

54

puede abrir otro archivo mientras vim está abierto :tabe filenamey cambiar al otro archivo que escriba :tabno :tabpal siguiente y al anterior en consecuencia.

Los atajos de teclado gT y gt también se pueden usar para cambiar de pestaña cuando no está en modo de edición (es decir, no en los modos de inserción, reemplazo, etc.). En algunos sistemas, Ctrl+ Alt+ Page Upy Ctrl+ Alt+ Page Downtambién permiten el cambio de tabulación, pero esto no siempre funciona (por ejemplo, no funcionará en el terminal OS X 'fuera de la caja').

Y puede ver el nombre del archivo en la parte superior de la aplicación vim.


16
Esta. También abra archivos en pestañas con:vim -p file1 file2
Ahora no

¡ASOMBRO! Nunca me había encontrado con esto antes, a pesar de haber usado vim durante años. Esto lo cambia todo .
yo_y el

Tenga en cuenta que las pestañas no están diseñadas para funcionar con varios archivos. Están destinados a trabajar con múltiples diseños . Ver el artículo .
patryk.beza

55
Aparte: si ya está en vim y desea agregar otro archivo, puede usar: :argadd filenamey luego :nexta él. Del mismo modo, puede usar :argdel filenamepara eliminar uno de los archivos en edición.
Luv2code

36

Comandos para cambiar entre buffers:

:bf            # Go to first file.
:bl            # Go to last file
:bn            # Go to next file.
:bp            # Go to previous file.
:bw            # Close file.

:help buffer para encontrar más información

Para conocer el uso de nombre de archivo Ctrl+ G, :fileo:f


1
:bwcerrar archivo jaja. No olvides leer la ayuda :bwdonde dice que solo debes usarla si sabes lo que estás haciendo. No es un gran problema, pero a menos que desee borrar todas las marcas e información sobre el archivo, mejor uso :bdo :qcomo una persona normal
Dylan

1
Más información :bwen caso de que tenga curiosidad: vi.stackexchange.com/questions/2212/…
wisbucky

26

Otra opción, aparte de las respuestas dadas, es dividir la ventana con:

:sp
:vsp

:vspes para división vertical. Luego use Ctrl+W <ARROW_KEYS>para moverse en los paneles.


44
Puede usar en :vslugar de:vsp
Khaja Minhajuddin

2
O incluso solo Ctrl+W, vpara división vertical y Ctrl+W, sdivisión horizontal.
Ruslan

1
Lo he estado usando CTRL+Wdurante años y recientemente edito mucho VI dentro de las páginas web. Cada vez que escribo el comando sin siquiera pensar y ... whammmm ... ¡la pestaña del navegador se HA IDO! Siempre me olvido. Realmente necesito aprender un nuevo atajo.
Jeach

13
:n -> Move to next file
:N -> Move to previous file

10

Hice una pregunta similar en superusuario,

"¿Cómo copiar y pegar entre diferentes ventanas de bash y archivos abiertos con VI?"

La respuesta a mi pregunta fue que no puedes, pero puedes abrir dos archivos en una ventana bash usando el :splitcomando de VIM :

  1. Abra un archivo con $ vim file1, abra un segundo archivo dentro de VIM usando el :split file2comando.
  2. O bien, use $ vim -o file1 file2de bash.
  3. Cambiar entre archivos - alternar el archivo activo - en VIM con ctrl- w ctrl- w.
  4. Una operación de ejemplo es copiar (o tirar) en el archivo1 yy, cambiar (3), luego pegar (o poner) el pcontenido en el archivo2.
  5. Todo lo demás es normal cuando cualquiera de las ventanas está activa, por lo que se :qcierra y se :q!fuerza el cierre.

Mi bash es en blanco y negro, por lo que el nombre del archivo de cada pantalla tiene el estilo de una línea 'seleccionada' invertida con el nombre del archivo citado allí.

Woot!


6

Creo que el método más conveniente para editar múltiples archivos es mediante el uso de pestañas. Puede abrir varios archivos en pestañas separadas a través de la línea de comando de esta manera:

vim -p file1.txt file2.txt

O si ya tiene vim abierto, puede abrir un nuevo archivo en una nueva pestaña de esta manera:

:tabe file2.txt

Una vez que tenga las pestañas abiertas, use gtpara ver la siguiente pestaña y gTpara ver la pestaña anterior.

También puede saltar a la primera pestaña con 1gt, la segunda pestaña con 2gt, etc.

Puedes cerrar pestañas usando :tabc

Finalmente, puede mover la pestaña actual a la nubicación th con :ntabmdonde ncualquier número sea mayor o igual que 0.


6
argadd a/b c/d e/f

argadd ...agregará todos los archivos a args, y también a :ls/ :buffersy le permitirá editarlos.


Ver :h arglsity :h argedit&:h argsd


Además, puede realizar ciertas acciones solo en args con :argdo ..., y puede comenzar de nuevo con sus args haciendo :argsd*.


0

Hay muchas maneras de hacerlo. El primero, quizás el menos conveniente, es llamar vimcon los archivos que desea editar: crear:

vim first_file second_file ...

Llama a los dos archivos en dos buffers. Para cambiar de un archivo a otro, utilice :ny :N. Para enumerar los archivos que está editando, :argshará el trabajo. :help bufferte ayudará más en esto.


Esto debería responder a tu pregunta. Pero aquí hay más información:

Hay una manera de editar sus archivos de una manera más conveniente dividiendo la pantalla de su consola usando vim . Para hacer esto, abra dos cuadros con :split( :sp) o :vsplit( :vs) mientras usa vim . Luego navegue en estos cuadros usando la combinación Ctrl+ W> Ctrl+ W. También puede utilizar Ctrl+ W+ la flecha o la tecla ( H, J, Ko L) que corresponde al siguiente fotograma. Cuando haya terminado, edite el archivo que desee con :e file_name. :help opening-windowte ayudará más en esto.

Ahora, si desea ver las diferencias entre los archivos, use el -dargumento o llame al programa vimdiff (es lo mismo) con los archivos correspondientes. :help diffte ayudará más en esto.

vim -d first_file second_file ...

Avísame si tienes algún problema.


0

Me gusta usar ventanas divididas, tanto horizontales como verticales, para editar múltiples archivos.

Yo uso tmux para administrar esas ventanas más fácilmente

https://tmux.github.io/ "¿Qué es un multiplexor de terminal? Le permite cambiar fácilmente entre varios programas en un terminal, desconectarlos (siguen ejecutándose en segundo plano) y volver a conectarlos a un terminal diferente. Y hacer un mucho más. Ver el manual ".

Ejemplo: mirar archivos o ejecutar pruebas a la derecha, editar pruebas y archivos fuente a la izquierda: ingrese la descripción de la imagen aquí


0

:e #(filename) para alternar entre dos archivos abiertos

:p para el archivo anterior

:n para el siguiente archivo


Bienvenido a U&L, esto casi no agrega nada a otra respuesta publicada hace años.
Archemar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.