Cambie entre los modos de Vim, use los comandos básicos de edición y ejecute tareas comunes como buscar, reemplazar y comentar código.
Instalación
Vim viene preinstalado en la mayoría de los sistemas Linux. Ejecute vim --version para comprobar la versión instalada. Este tema usa Vim 8.0 como ejemplo. Los comandos y las funciones pueden variar en otras versiones.
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Aug 10 2022 11:26:47)
Included patches: 1-1763
Modified by OpenAnolis Community
Compiled by OpenAnolis Community
Enormous version without GUI. Features included (+) or not (-):
+acl +farsi +mouse_sgr -tag_any_white
......
Cambio de modos
Ejecute vim filename para abrir un archivo en modo Normal. Si el archivo no existe, Vim lo crea. A continuación se describe cada modo y cómo cambiar entre ellos.
|
Modo |
Función |
Cambio de modo |
|
Modo Normal (Normal Mode) |
Copiar, pegar y eliminar caracteres o líneas. |
|
|
Modo de inserción (Insert Mode) |
Insertar caracteres en la posición del cursor. |
En modo Normal, presione Nota
Cuando el modo de inserción está activo, aparece |
|
Modo de reemplazo (Replace Mode) |
Sobrescribir caracteres en la posición del cursor. |
En modo Normal, presione Nota
Cuando el modo de reemplazo está activo, aparece |
|
Modo visual (Visual Mode) |
Seleccionar texto. Comandos como copiar, reemplazar y eliminar se aplican solo al texto seleccionado. |
En modo Normal, presione Nota
Cuando el modo visual está activo, aparece |
|
Modo de comandos (Command Mode) |
Buscar y reemplazar cadenas, mostrar números de línea, guardar cambios y salir. |
En modo Normal, presione |
Comandos básicos
Apertura de archivos
vim filename: abre un archivo en modo Normal. Si el archivo no existe, Vim lo crea.-
vim filename1 filename2: abre varios archivos.Vim abre primero
filename1. Guárdelo con:wy luego ejecute:bnpara cambiar afilename2. Guardefilename2con:w.:bp: cambia al archivo anterior.:ls: muestra todos los archivos abiertos.
:open filename3: abre un archivo nuevo en modo de comandos. Guarde primero el archivo actual con:w.
Movimiento del cursor
-
En modo Normal
Flecha arriba /
k: mover hacia arriba.Flecha abajo /
j: mover hacia abajo.Flecha izquierda /
h: mover hacia la izquierda.Flecha derecha /
l: mover hacia la derecha.
-
En modo de inserción
Use únicamente las teclas de dirección.
Inserción de contenido
En modo Normal, presione i,I,a,A,o,O para entrar al modo de inserción:
i: inserta antes del cursor.I: inserta al inicio de la línea.a: inserta después del cursor.A: inserta al final de la línea.o: abre una línea nueva debajo.O: abre una línea nueva arriba.
Copia y pegado
En modo Normal:
yy: copia la línea actual. Péguela conp.nyy: copianlíneas a partir de la línea actual. Por ejemplo,2yycopia dos líneas.p: pega debajo del cursor.P: pega arriba del cursor.
Eliminación
-
En modo Normal
x: elimina el carácter donde está el cursor.dd: elimina la línea actual. Péguela conp.dk: elimina la línea actual y la línea superior.dj: elimina la línea actual y la línea inferior.dG: elimina desde la línea actual hasta el final del archivo.nx: eliminancaracteres a partir del cursor.ndd: eliminanlíneas a partir de la línea actual. Péguelas conp.
-
En modo de inserción
Use
Deletepara eliminar caracteres.
Búsqueda
En modo Normal
-
/text: buscatext. De forma predeterminada, la búsqueda distingue mayúsculas de minúsculas. Presione Enter para resaltar las coincidencias.Para una búsqueda que no distinga mayúsculas de minúsculas, ejecute
:set ignorecase. Para restaurar la distinción, ejecute:set noignorecase.
n: siguiente coincidencia.N: coincidencia anterior.
Reemplazo
-
En modo Normal
r: reemplaza el carácter donde está el cursor.R: entra al modo de reemplazo para sustituir de forma continua. PresioneEscpara salir.cc: elimina la línea actual y entra al modo de inserción.:%s/oldtext/newtext/g: reemplaza todas las apariciones deoldtextpornewtext. Sin/g, solo se reemplaza la primera coincidencia de cada línea.
-
En modo de inserción
Elimine el contenido antiguo y escriba el nuevo.
Deshacer y rehacer
En modo Normal
u: deshace el último cambio.U: deshace todos los cambios de la línea actual.Ctrl+r: rehace el último cambio deshecho.
Sangría y alineación
-
En modo Normal
>>: aplica sangría a la derecha en la línea actual. Sangría predeterminada: 8 espacios (una tabulación).<<: quita sangría a la izquierda en la línea actual.
-
En modo de comandos
:ce: centra la línea.:le: alinea la línea a la izquierda.:ri: alinea la línea a la derecha.
Comentado de código
Haga una copia de seguridad del archivo antes de hacer reemplazos masivos, o use el comando de deshacer (
u) para revertir errores. Por ejemplo, ejecutesudo cp /etc/text.txt /etc/text.txt.bakpara respaldar un archivo.Conozca la sintaxis de expresiones regulares de Vim para evitar eliminar contenido por accidente. En las expresiones regulares de Vim,
/debe escaparse como\/. Practique con herramientas como Regex101.Ajuste el símbolo de comentario según el lenguaje de programación.
-
En modo visual
-
Comentar varias líneas consecutivas de código
Seleccione las líneas que desea comentar al mover el cursor hacia arriba o hacia abajo.
Presione
:para entrar al modo de comandos. Vim completa automáticamente:'<,'>, que apunta al rango seleccionado.Introduzca el comando de reemplazo. Por ejemplo, para agregar
#al inicio de cada línea, introduzcas/^/#/y presioneEnter.
Comentar todo el código:
:%s/^/#/gagrega#al inicio de cada línea.
-
-
En modo de inserción
Escriba manualmente los símbolos de comentario para comentar el código.
Guardado y salida
Guardar:
:wSalir:
:qGuardar y salir:
:wq,:xoZZForzar la salida sin guardar:
:q!Forzar el guardado y salir:
:wq!
Cifrado de documentos
vim -x filename: abre un archivo con cifrado. Establezca una contraseña y guarde el archivo para que el cifrado surta efecto. Las siguientes aperturas requerirán la contraseña.-
Cancelar el cifrado:
Ejecute
:set key=para borrar la clave de cifrado.Guarde y salga con
:wq.Vuelva a abrir el archivo con
vim filename. Ya no se solicitará la contraseña.
Ejecución de comandos de shell
!pwd: muestra el directorio de trabajo actual.!ls: muestra los archivos del directorio actual.
Edición en varias ventanas
vim -o filename1 filename2: abre dos archivos en ventanas separadas. Salga de cada ventana de forma individual.:n: siguiente ventana.:N: ventana anterior.
Ayuda
Ejecute
vim --helpen la terminal para consultar la sintaxis de los comandos de Vim.-
En modo Normal
:help: abre el documento de ayuda de Vim (solo lectura). Salga con:q.:help i: muestra la ayuda dei.:help yy: muestra la ayuda deyy.:set nu: muestra los números de línea.
Ejemplos de uso
Modificar un archivo de configuración
Inserte Location en la primera línea de example.conf:
Ejecute
vim example.confpara abrir el archivo.Coloque el cursor en el primer carácter y presione
ipara entrar al modo de inserción.Introduzca
Locationy presione Enter para iniciar una línea nueva.Presione
Escpara volver al modo Normal.-
Introduzca
:wqpara guardar y salir.
Insertar contenido en una línea específica
Inserte # al inicio de la línea 10 en example.conf:
Ejecute
vim example.confpara abrir el archivo.Ejecute
:10para mover el cursor a la línea 10.Presione
ipara entrar al modo de inserción.Introduzca
#.Presione
Escpara volver al modo Normal.-
Introduzca
:wqpara guardar y salir.
Buscar e insertar contenido
En example.conf, inserte LoadModule rewrite_module modules/mod_rewrite.so después de Include conf.modules.d/*.conf:
Ejecute
vim example.confpara abrir el archivo.Busque la línea objetivo:
/Include conf.modules.d/*.confPresione
ipara entrar al modo de inserción.Introduzca
LoadModule rewrite_module modules/mod_rewrite.so.Presione
Escpara volver al modo Normal.-
Introduzca
:wqpara guardar y salir.
Eliminar contenido
En example.conf, elimine # del inicio de la línea #Listen 12.34.XX.XX:80 y elimine la línea Listen 80:
Ejecute
vim example.confpara abrir el archivo.Busque la línea objetivo:
/#Listen 12.34.XX.XX:80. El cursor se ubicará sobre#.Presione
xpara eliminar#.Mueva el cursor a la línea Listen 80 y presione
ddpara eliminarla.-
Introduzca
:wqpara guardar y salir.
Editar Docker.yaml
Cree y edite docker-compose.yaml:

Quitar comentarios de varias líneas
-
Suponga que
#está al inicio de una línea, posiblemente precedido por espacios o sangría:# This is a comment # Another comment # Yet another comment -
Quite los comentarios:
:%s/^\s*#\s\?//Desglose del patrón:
^: inicio de línea.\s*: cualquier espacio en blanco (maneja la sangría).#: símbolo de comentario.\s\?: un espacio opcional después de#.//: reemplaza la coincidencia con nada (la elimina).
Este comando procesa todo el archivo. Resultado:
This is a comment Another comment Yet another comment
Actualizar Vim
Si su versión de Vim no cubre sus necesidades, actualícela con los siguientes comandos.
Alibaba Cloud Linux 3 and 2
sudo yum update vim
CentOS 7 and 8
sudo yum update vim
Fedora
sudo yum update vim
Ubuntu and Debian
sudo apt upgrade vim
openSUSE
sudo zypper update vim
Solución de problemas
-
"No write since last change" al salir:
Causa: el archivo se modificó pero no se guardó.
Solución: guarde y salga con
:wq, o descarte los cambios con:q!.
-
No es posible escribir texto:
Causa: es probable que esté en un modo distinto al de inserción, como el modo visual.
Solución: presione
Escpara volver al modo Normal y luego entre al modo de inserción.
-
No es posible guardar el archivo:
Causa: el usuario actual no tiene permisos de escritura. Los archivos de configuración del sistema, como
/etc/hostsy/etc/nginx/nginx.conf, requieren permisos de superusuario.Solución 1: abra el archivo con
sudo vim example.conf.Solución 2: guarde con permisos elevados mediante
:w !sudo tee %. También puede cambiar los permisos o el propietario del archivo consudo chownosudo chmod.
-
Existe un archivo ".swp":
Causa: el archivo está abierto en otra sesión de Vim.
Solución: confirme que ninguna otra terminal esté editando el archivo. Si no hay ninguna, busque y elimine el archivo
.swpconll -ay vuelva a abrir el archivo. También puede ejecutar:recoverpara restaurarlo desde el archivo de intercambio.