fbpx Comando vi en Linux: Editor de texto y atajos esenciales | Certificação Linux

Comandos vi en Linux: Guía Completa (guardar, salir, copiar, buscar)

📅 01/01/2019 ⏱ 9 min ✍️ Uira Ribeiro
Linuxcomandos
Comandos vi en Linux: Guía Completa (guardar, salir, copiar, buscar)
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

El Comando vi en Linux es un editor de textos ASCII poderoso y muy usado en la interfaz de caracteres de Linux para edición de archivos y programas. Su uso no es muy intuitivo a primera vista, pero la edición simple de textos puede hacerse usando pocos comandos. 

Puede ser muy útil para pequeñas correcciones puntuales, principalmente en ambiente de producción. Entonces no es mala idea saber manejar este editor de textos universalmente disponible en las distribuciones Linux.

Básicamente tiene dos modos de trabajo: el modo de operación y el modo de inserción. En el modo de operación el vi espera comandos que van a realizar alguna acción. En el modo de inserción, todo lo que se escriba es considerado texto. 

pantalla inicial del vim

El modo de operación se accede a través de la tecla ESC. El vi siempre inicia en este modo. Para entrar en el modo de inserción, basta con presionar la tecla INSERT o el comando "i". 

Para hacer la edición simple de archivos en vi:

$ vi nomedoarquivo

Cambie el modo a inserción con la tecla INSERT o presionando la tecla "i". El cursor puede moverse en este modo con las flechas de dirección. Al terminar de escribir presione la tecla ESC y escriba:

:w para guardar los cambios;
:wq para guardar y salir del vi;
:q! para salir sin guardar;

Vea a continuación la tabla de comandos aceptados por el vi. Todos los comandos deben darse en el modo de operación. El signo "+" indica teclas que deben presionarse simultáneamente. La coma indica que las teclas deben escribirse en secuencia. Vea también nuestro contenido con todos los principales procesos y comandos en linux.

AcciónComando
Abrir Archivo:e archivo
Guardar Archivo:w
Guardar Archivo Como:w archivo
Guardar y Salir:wq
Salir sin guardar:q!
Grabar contenido si fue alterado:ZZ
Para marcar un texto para copiar o cortarv, flechas de dirección
Para copiar texto marcadoy
Para cortar texto marcadoc
Para pegar texto marcadop
Copiar una líneayy
Copiar hasta el final del archivoyG
Borrar texto adelante (DEL)x
Borrar texto hacia atrás (BACKSPACE)X
Borrar una líneadd
Borrar hasta el final del archivodG
Borrar hasta el final de la líneaD
Buscar texto adelante/texto
Buscar nuevamente/
Buscar texto hacia atrás?texto
Buscar nuevamente?
Deshacer cambiosu
Rehacer cambiosCTRL+r
Formatear Alineación Centrada:ce
Alineación a la derecha:ri
Alineación a la izquierda:le
Abrir nueva ventana:new
Dividir la ventana actual en dos:split
Abrir archivo en nueva ventana:split archivo
Ir a la ventana de arribaCTRL+w, k
Ir a la ventana de abajoCTRL+w, j
Ir al inicio de la línea0
Ir al final de la línea$
Ir al final del archivoG
Ir a la línea de abajoj
Ir a la línea de arribak
Ir a la izquierdah
Ir a la derechal
Ir al final de la pantallaL
Ayuda:help
Inserta texto antes del cursori
Inserta texto después del cursora
Inserta texto en una nueva líneao

Trucos de Programadores con Vi

El vi al ejecutarse busca por un archivo de configuración llamado ".vimrc" en el directorio HOME de los usuarios. No siempre existe este archivo, pero puede ser creado por el usuario para hacer algunas cosas interesantes con el vi, tales como:

Colorear la sintaxis

Para colorear la sintaxis de archivos con código fuente, se debe habilitar la directiva "sintax on" en el archivo .vimrc, con el comando:

$ echo 'sintax on' >> ~/.vimrc

De esta forma, el viwill color the text, recognizing various will color the text, recognizing various programming languages. Use las comillas simples en estos comandos, como se demuestra.

Resaltado de sintaxis en vim

Enumerar las líneas

Otro recurso interesante en vim es la enumeración de las líneas, que permite depurar fácilmente un código fuente. Para habilitar este recurso se debe usar la directiva "set number" en el archivo .vimrc, con el comando:

$ echo 'set number' >> ~/.vimrc

De esta forma, el viwill enumerate the text, facilitando the depuración del código.

enumerar las líneas en vim

Depurador de Sintaxis

Esta opción del vi es muy interesante para los programadores. Permite que una tecla sea mapeada para activar un compilador o intérprete de lenguaje, con el objetivo de verificar la sintaxis, sin necesidad de salir del editor de textos.

En el ejemplo, se utiliza la opción "-l" de php, que hace solo una verificación de sintaxis. La combinación de teclas elegida fue CTRL B, que ejecuta el comando php -l en el archivo fuente.

$ echo 'map <C-B> :!php -l %<CR>' >>~/.vimrc

De esta forma, para verificar la sintaxis de un código php, basta con presionar CTRL B, quewill activate the php interpreter to verify the syntax:

código php con error

En este ejemplo, induje un error de falta de ";". Al presionar CTRL B, el php will indicate that there is a syntax error:

llamada del depurador en vim

Esta facilidad del vim es extremadamente útil en lenguajes interpretados, que permiten verificar la sintaxis sin la necesidad de abandonar el editor.

Para otros lenguajes, se puede usar el mismo concepto, alterando la opción de verificación de sintaxis:

  • PERL: echo 'map <C-P> :!perl -c %<CR>' >>~/.vimrc
  • PYTHON: echo 'map <C-Y> :!python -d %<CR>' >>~/.vimrc

Deshacer infinito

La tecla "u" en el modo de comandos del vi permite volver al texto anterior, deshaciendo los cambios. Sin embargo, al salir del vi, la capacidad de deshacer cambios se pierde. Por lo tanto, si estás editando un código fuente y sales del editor, ya no podrás usar el recurso de deshacer cambios.

Pero hay una solución para que el vi mantenga un historial de cambios, considerada un verdadero salvador de vidas.

Él permite que el vi mantenga un historial de cambios de archivos en un directorio especial en el HOME del usuario.

Para habilitar este recurso, se deben ejecutar los siguientes comandos:

Primero se crea el directorio para almacenar el historial en el HOME del usuario:

$ mkdir -p ~/.vim/undodir

Después se debe habilitar el recurso de undofile:

$ echo 'set undofile' >>~/.vimrc

Por último, se configura el directorio para almacenar estos archivos, creado en el primer paso:

$ echo 'set undodir=~/.vim/undodir' >>~/.vimrc

De esta forma, el vi mantendrá el historial de cambios, posibilitando deshacer cambios con la tecla "u".

De vez en cuando, es interesante limpiar el contenido del directorio ~/.vim/undodir.

Cambiar texto (reemplazar)

El recurso de reemplazar un texto por otro en vim también ayuda mucho para hacer reemplazos de código en vi.

Para hacer un reemplazo, entra en el modo de comando con la tecla ESC y después escribe:

:%s/texto a ser procurado/texto a ser substituído/g

De esta forma, vim buscará por todas las ocurrencias del texto a buscar y cambiará por texto a reemplazar en todo el documento.

Si quieres que el vi solo reemplace la primera ocurrencia, el comando es el mismo, pero sin la "g" al final:

:%s/texto a ser procurado/texto a ser substituído/

Si el texto a buscar o reemplazar contiene una barra simple "/", se debe usar una barra invertida "\" antes, para que el vi sepa que la "/" en el texto no sea interpretada como un separador.

En este ejemplo, la ocurrencia de "/etc" será reemplazada por "/var":

:%s/\/etc/\/var/g

Otro reemplazo interesante es colocar todas las líneas dentro de una etiqueta HTML, como por ejemplo, de párrafo:

:s/.*/<p>\r&\r<\/p>/

La expresión .* indica el inicio de la línea, y el "\r" el "return" (final de la línea).

Buscar texto

Para buscar un texto en vi, basta con presionar la barra "/" en el modo de comando y escribir el texto. De esta forma, el vi buscará las ocurrencias del término buscado una a una, presionando nuevamente la tecla "/".

Un recurso para potenciar las búsquedas de texto en vi es habilitar el resaltado del término, así como habilitar el "case insensitive", posibilitando búsquedas ignorando si el texto está en mayúsculas o minúsculas:

Para habilitar el resaltado de texto buscado:

$ echo 'set hlsearch' >> ~/.vimrc

Para ignorar si el término está en mayúsculas o minúsculas:

$ echo 'set ignorecase' >> ~/.vimrc

Para buscar un texto respetando las mayúsculas, si el término contiene una letra en mayúscula:

echo 'set smartcase' >> ~/.vimrc

Indentación

Un truco interesante del vi es la indentación automática del texto.

Para arreglar un código fuente con indentación, escribe en el modo de comando:

gg=G

De esta forma, el vi formateará el código, haciéndolo más legible.

También es posible determinar que el vi indente el código mientras programas, variando el espaciado dependiendo del tipo de código fuente.

Para habilitar este recurso:

$ echo 'filetype indent plugin on'  >> ~/.vimrc

Después, se debe crear un directorio llamado ".vim" en el directorio HOME, si este aún no existe:

$ mkdir ~/.vim

En este directorio, se debe crear un archivo para cada tipo de código fuente, como en el ejemplo:

$ cat ~/.vim/php.vim 
setlocal shiftwidth=2
setlocal tabstop=2

En este ejemplo, hay un archivo php.vim dentro del directorio ~/.vim.

Y en él hay dos directivas:

  • shiftwidth=2 Determina que el número de espacios para auto indentación sean 2. El padrão son 8 espacios.
  • tabstop=2 Determina el número de espacios que la TAB contiene. El padrão son 8 espacios.

Para python, por ejemplo:

$ cat ~/.vim/python.vim
setlocal expandtab
setlocal shiftwidth=4
setlocal softtabstop=4

En este ejemplo, las directivas expandtab y softtabstop son para:

  • expandtab No hace el cambio de TAB por espacios;
  • softtabstop permite fingir que los TABS son espacios en el momento de la edición.

Quitar los ^M al final de los archivos

Generalmente después de copiar un archivo de texto de Windows a Linux y editarlo en vi, el archivo aparece con códigos "^M" al final de cada línea.

De esta forma, se puede hacer el ajuste del archivo en vi, utilizando el comando a continuación, en el modo de comandos:

:e ++ff=dos

El comando de reemplazo también funciona bien:

:%s/<Ctrl-V><Ctrl-M>/\r/g

Aprende mucho más sobre Linux en nuestro curso en línea. Puedes realizar la inscripción aquí. Si ya tienes una cuenta, o quieres crear una, simplemente inicia sesión o crea tu usuario aquí.

¿Te gustó? Comparte

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp