Viernes de terminal: Pensando Vim [Algunos tips]

Disculpen los errores de ortografía de los Gif escribí muy rápido

Este post fue publicado en el foro hace un par de meses, creo que es hora de que pase al blog, dudas, comentarios todo pueden hacerlo en los comentarios, por favor NO FLAME si no te agrada Vim solo retirate del post 🙂

Me saltare la parte básica porque se volverá muy extenso si quieres o estas interesado en aprenderlo te recomiendo que desde la terminal ejecutes

$ vimtutor

Ahora si, sin mas comenzamos 😀

Macros en VIM

Tal vez no sea uno de los grandes misterios de vim pero es bueno saberlo vim tiene soporte de macros es posible almacenar macros de la a a la z ; para comenzar a grabar solo es necesario presionar q+letra para dejar de grabar presionamos q y para invocar la macro es algo como numero+@+letra.

Donde:
letra: Es una tecla de la a a la z.
numero: Es el numero de veces que repetiremos la acción.

Esto nos facilitara muchas tareas repetitivas. Por ejemplo; Supongamos que tenemos estas lineas:

uno ejemplo uno
dos ejemplo dos
tres ejemplo tres
cuatro ejemplo cuatro
cinco ejemplo cinco

Queremos darle este formato:

'uno': 'ejemplo' 'uno';
'dos': 'ejemplo' 'dos';
'tres': 'ejemplo' 'tres';
'cuatro': 'ejemplo' 'cuatro';
'cinco': 'ejemplo' 'cinco';

Aquí es donde las macros nos facilitan todo 🙂

VIM

Secuencia utilizada:

qa I ' [Esc] ea ': [Esc] wi ' [Esc] ea ' [Esc] wi ' [Esc] A '; [Esc] 0j q

Posteriormente colocar el cursor en la linea a cambiar y utilizar numero+@+letra en este caso usé 4+@+a

Sustituir

Una herramienta muy importante en Vim es la de sustituir para ello nos situamos en Vim modo Normal presionando Esc posteriormente presionamos : y escribimos el comando digo comando porque no esta limitado a sustitución. es muy similar a RegEx
Ejemplos:

El mas común cambiar una cadena de caracteres en todo el documento:

Terminal2

Comando:

:%s/vim/Vim/g

Sustituye en todas las lineas vim por Vim nota: si no tuviera el signo % solo buscaría en la linea que estés ubicado

Sustituir entre cierto rango acá entre las lineas 3,5:

Terminal3

Comando:

:3,5s/Vim/VIM/g

De la linea 3 a la 5 sustituye Vim por VIM

Acá noten que no hay una g al final este solo edita la primera palabra que coincide

Terminal4

Comando:

:3,5s/Vim/VIM

Con esta linea eliminamos todas las lineas que contengan un #

Terminal5

Comando:

:.,$g/#/d

de la linea actual . hasta el final del documento $ busca los numeral # y eliminalos d

Acá un comando ordenar la sección del archivo

Terminal6

Comando:

: 3,$sort

De la linea 3 hasta el final del documento ordenalo

Otros Comandos

Aquí el truco esta en el comando :r read lo que hace este como su nombre lo dice hahaha leer, podrías agregar el texto de otro documento, pero en este ejemplo agregamos el indicador ! que este por separado es ejecutar, es posible ejecutar un script desde el mismo vim para debugear o cualquier cosa que se te ocurra acá un ejemplo:

Terminal7


Comando por orden de aparición:

#Fecha:
:r!date

#Fecha con formato:
:r!date +\%D

#Listar directorios:
:r!ls Documentos

Estoy usando comandos comunes pero vim toma la salida de cualquier comando y la inserta como texto en el documento.

Y Esto solo es una pequeña parte aun falta mas… Y las cosas que desconozco hahahaha.

Selección

Por ultimo pero no menos importante es el estado Visual donde podemos seleccionar lineas para manipularlas fácilmente. Existen tres tipos de selección visual.

v Visual por caracteres
V Visual por lineas
control+v Visual por bloques

Seleccionar lo que esta dentro de un paréntesis:
v% Si estas en el inicio/final del paréntesis
vib Si estas dentro de los paréntesis

Terminal8

Selecciona lo que esta dentro de comillas dobles o sencillas:
vi' Selecciona comillas sencillas
vi" Selecciona comillas dobles

Terminal9

viB Selecciona todo lo que este dentro de las llaves

Terminal10

Selección por linea

ggVG Selecciona todo el documento

Terminal11

Aquí básicamente es gg ir al inicio; entrar al selector visual V; e ir al final G.

Selección por bloque

control+v

Terminal12

[control] v e5j C [escribes el texto] [esc] [esc]

Y en este entras al selector visual por bloques controlv, avanzo al final de la palabra, y 5 lineas abajo 5j, borro la palabra con C escribo el texto a sustituir y presiono Esc Esc.

El otro es igual pero en lugar de c es algo como elimina y entra en modo insert utilizo i entra en modo insert I donde el puntero esta localizado.

Todo esto que explico tal vez parezca misterioso o algo por el estilo como vim ninja hahaha pero no es nada que no este en el manual de vim Vim tiene una de las mejores documentaciones que conozco para entrar a la documentación solo ingresen

:help

si necesitan algo en especifico

:help :w

Esto los llevara directamente a la sección que habla de :w guardar.

Ahora si… Feliz Vim gente. 😀


18 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Nodetino dijo

    Creo que comenzaré a usar Vim 🙂

  2.   Rodrigo Bravo dijo

    Excelente articulo gracias por compartirlo. No sabía lo de seleccionar por bloque. Saludos!

  3.   BlueSkull dijo

    Emacs…, creo que alguien tenia que decirlo, asi que para que esperar mas :D, no, no es el inicio de un Flame, entre Emacs y Vim no puede caber discusion :D, esta bastante claro cual es superior, y no, no e Vim ;).

    1.    Blablabla dijo

      Sí, sí es el inicio de un flame. Cuidado con ese tipo de comentarios porque no tienen nada de objetivo. Además, no aporta en nada a lo que trata el artículo. Saludos.

    2.    Zironid dijo

      Emacs! Emacs! Emacs! 😀

    3.    Martin dijo

      Emacs for the masses!
      «[…]creo que alguien tenia que decirlo[…]» Jajaja, +1!

      Viste como es, viene uno que se hace el exótico y dice «cursores con flechas? WASD? No no, yo les mostraré el camino, es hjkl» y hay un montón que se prenden detrás >:D

      @Blablabla: bien ahí, tu nick hace honor a tu cháchara!

    4.    Giskard dijo

      Una encuestica para ver cuál prefieren los lectores no vendría mal.

  4.   ahdezzz dijo

    ¡Genial! Vim es de lejos el mejor editor de texto. Ojala publiquen mas seguido en este sitio sobre dicho editor. Saludos.

  5.   Jorgicio dijo

    Siempre tuve problemas para entender las macros en Vim, ahí en un ratito libre le doy una vuelta 😛

    Nota: Para los usuarios de KDE, usen Vim-QT 😀

    Gracias 😀

  6.   eliotime3000 dijo

    Por fin mi Galaxy Mini tendrá una razón más para vivir: no tengo EMACS, pero sí VIM.

    Tomaré en cuenta tus tips.

  7.   kuk dijo

    buena info gracias 🙂

  8.   Lito dijo

    comparte tu vimrc esta muy entendible visualmente agradable :)!!! espero que me lo compartas :)!

    1.    Wada dijo

      Claro que lo hare 😀 deja preparo un post

  9.   ramg91m dijo

    Wow se ve muy bueno :)! jaja comenzare a practicar mas, y mas tu vimrc se ve muy bien O.o! espero que lo compartas porfavor ;)!

    1.    Wada dijo

      De hecho no es tanto vimrc, pero explicare que he hecho hahaha

      1.    ramg91m dijo

        jaja mucho mejor :)! asi todos aprendemos jaja gracias :)! 😉

  10.   Tesla dijo

    Muy buenos consejos Wada. La verdad es que mis necesidades de programador son muy básicas y quizá por eso nunca he llegado a ver el potencial de Vim. No obstante me parece interesante lo que comentas. Intentaré ponerlo en práctica cuando tenga que hacer alguna cosa.

    Muchas gracias!

  11.   Jonathan Leonel Gasparrini dijo

    Excelente post! Aunque ya sabía estos tips muy bien explicado para los que no los conocían!
    Una pequeña ayuda para usuarios nuevos, «vimtutor» se encuentra en inglés, para aquellos que quieran el tutorial en español, simplemente escriban «vimtutor es».

    Amo vim, mi vida seria totalmente distintinta sin él!
    Hace 2 años que lo utilizo y cada dia me sorprendo mas =)

    Saludos

    P/D: El que quiera ver un ejemplo de configuracion .vimrc, los invito a ver el mio! =) https://github.com/jlgasparrini/dotvimrc