Sé que puedo abrir varios archivos vim
haciendo algo como vim 2011-12*.log
, pero ¿cómo puedo cambiar entre archivos y cerrarlos de uno en uno? Además, ¿cómo puedo saber el nombre del archivo actual que estoy editando?
linux
command-line
vim
files
cwd
fuente
fuente
Respuestas:
En primer lugar, en vim puede ingresar :(dos puntos) y luego ayudar
help
, ala:help
para 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
Ok, a tu respuesta.
Después de iniciar vim con una lista de archivos, puede pasar al siguiente archivo ingresando
:next
o:n
para abreviar.:wnext
es la abreviatura de escribir los cambios actuales y luego pasar al siguiente archivo.También hay un análogo
:previous
,:wprevious
y:Next
. (Tenga en cuenta que:p
es la forma abreviada de:print
. La forma abreviada de:previous
es:prev
o:N
.)Para ver dónde se encuentra en la lista de archivos, ingrese
:args
y el archivo que se está editando aparecerá entre[]
paréntesis.Ejemplo:
resultado:
fuente
puede abrir otro archivo mientras vim está abierto
:tabe filename
y cambiar al otro archivo que escriba:tabn
o:tabp
al 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.
fuente
vim -p file1 file2
:argadd filename
y luego:next
a él. Del mismo modo, puede usar:argdel filename
para eliminar uno de los archivos en edición.Comandos para cambiar entre buffers:
:help buffer
para encontrar más informaciónPara conocer el uso de nombre de archivo Ctrl+ G,
:file
o:f
fuente
:bw
cerrar archivo jaja. No olvides leer la ayuda:bw
donde 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:bd
o:q
como una persona normal:bw
en caso de que tenga curiosidad: vi.stackexchange.com/questions/2212/…Otra opción, aparte de las respuestas dadas, es dividir la ventana con:
:vsp
es para división vertical. Luego useCtrl+W <ARROW_KEYS>
para moverse en los paneles.fuente
:vs
lugar de:vsp
Ctrl+W, v
para división vertical yCtrl+W, s
división horizontal.CTRL+W
durante 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.fuente
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
:split
comando de VIM :$ vim file1
, abra un segundo archivo dentro de VIM usando el:split file2
comando.$ vim -o file1 file2
de bash.:q
cierra 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!
fuente
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:
O si ya tiene vim abierto, puede abrir un nuevo archivo en una nueva pestaña de esta manera:
Una vez que tenga las pestañas abiertas, use
gt
para ver la siguiente pestaña ygT
para ver la pestaña anterior.También puede saltar a la primera pestaña con
1gt
, la segunda pestaña con2gt
, etc.Puedes cerrar pestañas usando
:tabc
Finalmente, puede mover la pestaña actual a la
n
ubicación th con:ntabm
donden
cualquier número sea mayor o igual que0
.fuente
argadd ...
agregará todos los archivos a args, y también a:ls
/:buffers
y le permitirá editarlos.Ver
:h arglsit
y: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*
.fuente
Hay muchas maneras de hacerlo. El primero, quizás el menos conveniente, es llamar
vim
con los archivos que desea editar: crear:Llama a los dos archivos en dos buffers. Para cambiar de un archivo a otro, utilice
:n
y:N
. Para enumerar los archivos que está editando,:args
hará el trabajo.:help buffer
te 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-window
te ayudará más en esto.Ahora, si desea ver las diferencias entre los archivos, use el
-d
argumento o llame al programa vimdiff (es lo mismo) con los archivos correspondientes.:help diff
te ayudará más en esto.Avísame si tienes algún problema.
fuente
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:
fuente
:e #(filename)
para alternar entre dos archivos abiertos:p
para el archivo anterior:n
para el siguiente archivofuente