Cómo usar Vim para la edición avanzada de texto plano o código en un VPS

Introducción


Vim, una mejora del vieditor de texto clásico, es extremadamente potente para editar código y texto plano. Aunque al principio pueda parecer obtuso y difícil, es una de las formas más eficientes de editar texto gracias a su sintaxis de comandos similar a la del lenguaje.

En un artículo anterior, explicamos cómo instalar Vim y realizar ediciones básicas . En este documento, abordaremos temas más avanzados que pueden ayudar a demostrar la versatilidad de la edición.

Asumiremos que ha instalado vim y está familiarizado con los comandos básicos de movimiento y edición analizados en el artículo vinculado anteriormente.

Navegación avanzada


Antes de comenzar con nuevo material, repasemos un poco la navegación que aprendimos en el artículo anterior:

  • Movimientos básicos
    • h: izquierda
    • l: derecha
    • j: abajo
    • k: arriba
  • Otros movimientos
    • gg: parte superior del documento
    • G: parte inferior del documento o número de línea si se coloca un número delante de G
    • w: siguiente palabra
    • e: fin de palabra
    • 0: comienzo de línea
    • $: fin de línea

Como pueden ver, ya tenemos bastantes comandos de movimiento a nuestra disposición. Sin embargo, también podemos dirigir el movimiento de otras maneras.

Podemos mover el cursor a diferentes áreas en la porción actualmente visible de la página usando estos comandos:

  • H : Mueve el cursor a la parte superior de la página visible actualmente (piensa en “alto”)
  • M : Mueve el cursor al centro de la página visible actualmente
  • L : Mueve el cursor a la parte inferior de la página visible actualmente (piensa en “abajo”)

Si queremos mover la página en lugar del cursor (como en el desplazamiento), podemos utilizar estos comandos:

  • CTRL-D : Av Pág
  • CTRL-U : Re Pág
  • CTRL-E : desplazarse hacia abajo una línea
  • CTRL-Y : desplazarse hacia arriba una línea

También podemos navegar por bloques lógicos de información. Esto puede ser útil si se escribe texto normal en lugar de código. Son similares a los comandos de navegación por palabras y líneas.

  • ) : Mover al inicio de la siguiente oración
  • ( : Mover al inicio de la última oración
  • } : Mover al inicio del siguiente párrafo (delimitado por una línea en blanco)
  • { : Mover al inicio del último párrafo (delimitado por una línea en blanco)

También puedes definir tus propios puntos en el archivo para saltar a ellos. Puedes establecerlos marksen cualquier punto del archivo. Luego, puedes referenciar esas marcas para saltar a ese punto o pasarlo a un comando que acepte movimientos:

  • m : Escribir “m” seguido de una letra crea una marca de referencia con esa letra.
    • Las letras minúsculas son específicas del documento actual, mientras que las letras mayúsculas solo se pueden usar una vez (se pueden usar para saltar a secciones en diferentes documentos).
  • : La comilla simple seguida de una letra de marca (previamente definida con la “m” como arriba), moverá el cursor al comienzo de la línea que contiene esa marca.
  • ` : La comilla invertida seguida de una letra de marca moverá el cursor a la posición exacta de la marca.

Estos comandos permiten colocar una marca y luego retirar, eliminar o formatear el área definida entre la posición actual y la marca. Esto permite un control muy preciso de las opciones de edición.

Cómo gestionar documentos


A menudo, al trabajar, ya sea en un proyecto de software o en un trabajo académico, es necesario poder referenciar varios documentos a la vez. Vim ofrece diferentes maneras de hacerlo, según cómo se desee trabajar.

Cómo gestionar los buffers


Una forma de gestionar varios archivos es mediante buffers. Los búferes suelen representar un archivo abierto para edición. Son básicamente todo lo que vim tiene abierto actualmente y a lo que puede acceder fácilmente.

Abrimos varios archivos con vim de la siguiente manera:

vim file1 file2 file3

Cada uno de estos archivos se abre en su propio buffer. Actualmente, solo podemos ver el primer archivo.

Podemos ver qué buffers tenemos disponibles escribiendo :buffers.

:buffers

:buffers
  1 %a  "file1"             line 1
  2     "file2"             line 0
  3     "file3"             line 0
Press ENTER or type command to continue

Si deseamos consultar el siguiente búfer, podemos escribir :bn. Esto cambiará al siguiente búfer. De igual forma, podemos cambiar a un búfer por número (en la primera columna de arriba) o por nombre, escribiendo b. Esto funciona incluso si el nombre del archivo está incompleto.

A continuación se muestran algunos de los comandos para administrar buffers:

  • :buffers : Lista de buffers disponibles
  • :ls : Lo mismo que arriba
  • :bn : Cambiar al siguiente búfer
  • :bp : Cambiar al búfer anterior
  • :bfirst : Cambiar al primer búfer
  • :blast : Cambiar al último búfer
  • :bdelete : Elimina el búfer actual
  • :badd : Abre un nuevo buffer con el nombre de archivo que sigue
  • :e : Edita otro archivo en un nuevo buffer y cámbialo.

Cómo administrar Windows


Un mecanismo de control independiente que Vim ofrece para gestionar múltiples archivos es el concepto de windowso views. Esto permite dividir el área de edición actual en diferentes ventanas para poder ver varios búferes simultáneamente.

Para dividir el espacio de trabajo actual en ventanas independientes, puede escribir :splito :sp. Esto abre una nueva ventana sobre la actual y la enfoca. Puede cambiar el búfer que se muestra en la nueva ventana usando los comandos de búfer mostrados arriba.

Aquí hay algunos comandos que podemos usar para crear y administrar ventanas:

  • :sp : Divide la ventana actual en dos. Inicialmente, se mostrará el mismo búfer en cada ventana.
    • Anteponga un número a la “sp” para establecer la nueva altura de la ventana.
  • :vs : Divide la ventana actual verticalmente. Inicialmente, se mostrará el mismo búfer en cada ventana.
    • Anteponga un número al “vs” para establecer el nuevo ancho de la ventana.
  • CTRL-ww : Cambiar el foco a la siguiente ventana
  • CTRL-w(movimiento) : Cambia el foco a la ventana en la dirección (h,j,k,l) ​​indicada
  • CTRL-wc : Cerrar la ventana actual
  • CTRL-w+ : Aumentar el tamaño de la ventana actual
  • CTRL-w- : Disminuir el tamaño de la ventana actual
  • CTRL-w= : Establecer todas las ventanas con el mismo tamaño
  • #CTRL-w_ : Establece la altura al tamaño indicado por el “#” precedente
  • :only : Cierra todas las ventanas excepto la actual
  • CTRL-wn : Abre una nueva ventana con un nuevo búfer

Cómo administrar pestañas


Un tercer concepto para gestionar múltiples documentos en Vim es el de tabs. A diferencia de muchos programas, en Vim, las pestañas pueden contener ventanas, no al revés. Las pestañas pueden contener ventanas, que actúan como ventanas gráficas en los búferes.

Podemos gestionar el diseño de la ventana de cada pestaña por separado. Para crear pestañas, podemos usar el :tabnewcomando para abrir una nueva pestaña.

Algunas formas sencillas de administrar las pestañas son:

  • :tabnew : Abrir nueva pestaña
  • :tabclose : Cerrar la pestaña actual
  • :tabn : Cambiar a la siguiente pestaña
  • gt : Cambiar a la siguiente pestaña
  • :tabp : Cambiar a la pestaña anterior
  • gT : Cambiar a la pestaña anterior
  • :tab ball : Abre todos los buffers en pestañas individuales
  • :tabs : Lista todas las pestañas disponibles

Al cambiar entre búferes, ventanas y pestañas, a veces resulta confuso saber qué archivo estás viendo. Una forma rápida de averiguar el nombre del archivo es escribir:

  • CTRL-g : Muestra el nombre del archivo actual

Comandos específicos del documento


Dependiendo del tipo de documentos con los que esté tratando, vim tiene ciertas funcionalidades que pueden ayudarlo.

Texto sin formato


Si edita documentos de texto sin formato, Vim puede ayudarle de diversas maneras. Una de las funciones esenciales para esta función es el corrector ortográfico.

Para activar la corrección ortográfica en vim, puedes escribir:

:set spell

Para configurar el idioma que se está utilizando, puede escribir:

:set spelllang=[language abbreviation]

Ahora, se revisará la ortografía de su documento. La línea ondulada normal aparecerá debajo de las palabras mal escritas. Así es como se usa.

Para saltar hacia adelante y hacia atrás entre palabras mal escritas, escriba:

]s    # Jump to next mistake
[s    # Jump to previous mistake

Una vez que el cursor esté sobre una palabra mal escrita, podrá ver sugerencias ortográficas escribiendo:

z=

Esto le mostrará una lista de posibles coincidencias. Puede seleccionar la opción que desee eligiendo el número asociado o pulsar ENTER para dejar la palabra como está.

Si desea marcar una palabra como correcta , puede agregarla a una lista de ortografía. Vim mantiene dos listas de ortografía: una normal y una temporal que se usará en la sesión actual.

Para agregar la palabra a la lista de palabras “buenas”, utilice uno de estos comandos:

zg    # Adds word to regular dictionary
zG    # Adds word to the current session dictionary

Si agrega una palabra accidentalmente, puede eliminarla yendo a la palabra y escribiendo:

zug   # Remove word from regular dictionary
zuG   # Remove word from the current session dictionary

Si a menudo tiene que escribir palabras o frases largas, puede agregar una abreviatura.

Si escribimos :abseguido de una abreviatura y una expansión, vim ingresará la expansión siempre que escribamos la abreviatura seguida de un espacio.

Por ejemplo, si somos puristas y seguimos el ejemplo de Richard Stallman de corregir cualquier uso de “Linux” con “GNU/Linux”, podemos crear una abreviatura que lo haga automáticamente:

:ab Linux GNU/Linux

Ahora, cuando escribimos “Linux”, vim sustituirá automáticamente “GNU/Linux”.

Linux is an operating system.

Cambios en:

GNU/Linux is an operating system.

Sin embargo, si nos encontramos hablando específicamente del kernel, donde sólo la palabra Linux sería apropiada, podemos cancelar la expansión escribiendo CTRL-Vantes de escribir el espacio.

GNU/Linux is an operating system with Linux(CTRL-V) as a kernel.

Si ya no queremos utilizar esta abreviatura, podemos eliminarla con este comando:

:una Linux 

Ahora nuestro “Linux” seguirá siendo “Linux”.

Otra cosa que podrías tener que hacer de vez en cuando es insertar caracteres que no están en un teclado QWERTY tradicional. Los llamamos “dígrafos”. Puedes ver una lista de los dígrafos de Vim escribiendo:

:digraphs

NU ^@  10    SH ^A   1    SX ^B   2    EX ^C   3    ET ^D   4    EQ ^E   5
AK ^F   6    BL ^G   7    BS ^H   8    HT ^I   9    LF ^@  10    VT ^K  11
FF ^L  12    CR ^M  13    SO ^N  14    SI ^O  15    DL ^P  16    D1 ^Q  17
D2 ^R  18    D3 ^S  19    D4 ^T  20    NK ^U  21    SY ^V  22    EB ^W  23
CN ^X  24    EM ^Y  25    SB ^Z  26    EC ^[  27    FS ^\  28    GS ^]  29
RS ^^  30    US ^_  31    SP     32    Nb #   35    DO $   36    At @   64

Ahora, puedes insertar cualquiera de los caracteres en la columna derecha escribiendo CTRL-kseguido de las dos letras en la columna izquierda.

Por ejemplo, en mi computadora, para ingresar el signo de libra esterlina, puedo escribir esto cuando estoy en modo de inserción:

CTRL-k Pd

£

Código fuente


Si está codificando, hay varias cosas diferentes que lo ayudarán a interactuar con su código.

Una de las más básicas es el resaltado de sintaxis. Puedes activarlo escribiendo:

:syntax on

Esto debería configurar el resaltado de sintaxis para su archivo según la extensión detectada. Si desea cambiar el idioma del resaltado, puede hacerlo configurando el idioma con:

:set filetype=[language]

Si desea utilizar una utilidad del sistema para modificar algunas líneas de su archivo, puede llamarla usando el !comando en modo normal.

Este comando acepta un movimiento y luego lo envía al comando que le sigue.

![motion] filter

Por ejemplo, para ordenar las líneas desde la posición actual hasta el final del archivo, puede escribir:

!G sort

Sort es un comando de Linux que ordena la entrada, alfabéticamente de forma predeterminada.

Si queremos insertar la salida de un comando en el archivo, navegue hasta una línea en blanco donde desee la salida. Escriba:

!!command

Esto colocará la salida del comando especificado en el documento.

Si queremos ver el resultado de un comando, pero no deseamos insertarlo en el documento, también podemos utilizar la versión en modo comando (:), que sería:

:!command

Esto le mostrará los resultados del comando, pero regresará a su documento sin modificaciones cuando termine.

Reducir la repetición


A menudo, al editar o crear cualquier tipo de archivo, te encontrarás repitiendo muchas operaciones iguales o similares. Por suerte, vim ofrece algunas maneras de guardar grupos de comandos en macros.

Para comenzar a grabar una macro, puede escribir qseguido de una letra para hacer referencia a la macro.

qa    # will save macro "a"

Cualquier comando que escriba se grabará como parte de la macro. Para finalizar la macro, puede qvolver a escribir.

Entonces si escribimos:

qa0c3wDELETED<esc>q

Esto iniciaría una macro (guardada como “a”), iría al principio de la línea y reemplazaría las siguientes tres palabras con la palabra “DELETED”. Luego, saldría del modo de inserción y finalizaría la macro.

Para reproducir esta macro, comenzando en la posición actual del cursor, utilice el @carácter seguido de la referencia de la macro:

@a

Esto reproducirá los comandos macro comenzando en la posición actual.

Si queremos crear una macro que finalice en modo de inserción, debemos finalizarla de otra manera (al escribir “q”, simplemente se insertará una “q”). Podemos ejecutar un comando en modo normal en modo de inserción precediéndolo con “< CTRL-O.

Por lo tanto, si queremos cambiar el contenido de los primeros paréntesis de esta línea, podríamos tener una macro que diga:

qi0f(lct)<CTRL-O>q

Esto crea una macro “i”. La macro se desplaza al principio de la línea actual. Encuentra el paréntesis de apertura y se desplaza un carácter a la derecha (para moverse dentro del paréntesis). Después, cambia todo hasta el paréntesis de cierre. Con vim en modo de inserción esperando el texto de reemplazo, pulsamos CTRL-Oseguido de qpara finalizar la macro, quedando en modo de inserción listos para reemplazar el texto.

Conclusión


Ahora deberías tener una idea de algunas maneras más complejas en que vim puede ayudarte. Aunque esto pueda parecer mucho, es solo el comienzo.

Hay muchas funciones que no hemos mencionado, y no es necesario que las conozcas todas. Aprenderás lo importante según cómo uses vim. Cuanto más practiques y lo uses a diario, más natural te resultará y más potente será.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post