2016-02-23-123021_715x420_scrot

I lov3 CLI : Editores (II)

Continuando con la serie de 3 capítulos, sobre los editores CLI más destacados. Ahora les traigo Vim, un hueso duro de roer, pero poderoso sin lugar a duda, definitivamente con una curva de aprendizaje considerable, totalmente opuesto a nano y su sencillez en cuanto a funciones. Pero aprender algo nuevo siempre cuesta al principio, la cosa es no rendirse y adquirir conocimientos, quien sabe si en algún momento de la vida te sea útil, tanto como aprender a cocinar, aprender carpintería u otros oficios, por cosa de cultura general (supervivencia) disculpen si empiezo a volar.  Por si no saben de que va nano, revisen I lov3 CLI : Editores (I) 🙂

Vim, es la versión mejorada del editor Vi (que se encuentra en todos los sistemas Unix), una de las características principales sobre otros editores es la posibilidad de trabajar en distintos modos pudiendo alternar entre ellos y realizar distintas operaciones, haciendo que sea un software rápido, potente y enfocado (ya que no sueltas para nada el teclado, todas las opciones se generan bajo combinaciones de teclas); esto ultimo puede ser lo que mas atemorice para usuarios novatos, y realmente de cualquier nivel, para épocas actuales que nunca en su vida han tocado una terminal (pero como digo uno no sabe que puede pasar mañana y se les cruza una por delante). Les cuento este editor fue creado el siglo pasado, 1970 aproximadamente, época en que las terminales se comunicaban con un host, mediante puerto serie, así que como pueden deducir, esas limitaciones de conexión dieron luz al concepto de distintos modos. Cabe mencionar que hay versiones de vim con interfaz gráfica y uso de ratón como gvim y kvim, para las nuevas generaciones.

Modos

  • Normal, se puede introducir todos los comandos normales del editor. Se inicia en este modo de forma default, a menos que se configure previamente.
  • Visual, es como el modo Normal, pero los comandos de movimiento amplían la zona resaltada solo que la zona de movimiento.
  • Select, al escribir un carácter imprimible, elimina la selección e inicia el modo insertar.
  • Insert, en este el texto que escribe se inserta en el buffer.
  • Command-line, se puede introducir una linea de texto en la parte inferior de la ventana, esto es para los comandos de la Ex, “:”, comandos de búsqueda, “?” y “/”además del comando de filtro “!”.
  • Ex, al igual que en el modo anterior, se puede introducir una linea de texto, pero se mantendrá en este modo. Edición limitada de la linea de comandos.

Uso básico

Para acceder a vim, desde el prompt, basta:

$ vim nombre_del_archivo [enter]

El cursor se mueve utilizando las teclas de las flechas o las teclas [h] izquierda, [j] abajo, [k] arriba y [l] derecha.

Pulsamos [ESC] para activar/desactivar los modos, además de cancelar un mando previamente ingresado o erróneo.

Para salir de vim: [ESC] :q! [enter] eliminando todos los cambios.

Para borrar un carácter sobre el cursor en modo normal, es suficiente pulsar [x], desde el cursor hasta el final de una palabra pulsamos [d] [w] , desde el cursor hasta el final de la linea [d] [$], para toda una linea [d] [d].

Para insertar tecleamos [i], abajo de la ventana, verán activado –insertar–, todo desde modo normal.

Deshacer acciones previas pulsamos [u], deshacer todos los cambios de una linea [U], deshacer lo deshecho [Ctrl] [R].

Para sustituir texto que ha sido borrado [p], esta acción pone el texto borrado después del cursor.

[G], sirve para ir al final del archivo.

[g] [g], si necesitamos ir al comienzo del archivo.

[Ctrl] [b], para retroceder una página.

[Ctrl] [f], para avanzar una pagina.

[Ctrl] [u], retroceder.

[Ctrl] [d], avanzar.

[Ctrl] [e], muestra otra línea del nivel superior. Útil para desplazarse por la pantalla sin mover el cursor de su posición.

[Ctrl] [y], muestra otra línea del nivel inferior. Útil para desplazarse por la pantalla sin mover el cursor de su posición.

[}], avanzar un párrafo. Útil para moverse por documentos que tienen espacios en blanco que separan párrafos o bloques de texto.

[{], retroceder un párrafo. Útil para moverse por documentos que tienen espacios en blanco que separan párrafos o bloques de texto.

[)], avanzar una oración.

[(], retroceder una oración.

[:]”número”, donde “número” es un número decimal que indica el número de línea a la que desea ir.

[/]”hola”, busca hacia delante la palabra “hola”, vim posiciona el cursor en la palabra “hola” si la encuentra.

[?]”hola”, busca hacía atrás la palabra “hola”, si la encuentra el cursor se ubicara en “hola”.

Para más ayuda les recomiendo dar una leída a vimtutor, junto a otra terminal con vim y un texto simple, para poder aplicar lo que van explicando en vimtutor, es muy practico y sencillo de entender, o al menos eso trata de ser. Necesitan estar dentro de vim e invocarlo:

$ vim
:! vimtutor

Personalizando Vim

Si les gusta programar o no, y para que sea más legible, podemos enumerar las lineas, para así al momento de hacer una búsqueda se nos haga más sencillo de encontrar:

Para activar

:set number

Para desactivar

:set number!

Pero si queremos mantener estos cambios cada vez que abrimos vim, necesitamos el archivo .vimrc en nuestra /home ,así evitamos un lío si se nos va la mano al ir modificando cosas, preferible en nuestra /home que en root, podemos copiar el que se encuentra en /etc.

$ cp /etc/vimrc ~/.vimrc

y agregamos a este, la opcioón set number, ahora cada vez al abrir nos aparecerá enumerada las lineas al ir saltando con [enter].

También recomiendo set autoindent, para el sangrado automático, además de syntax (usar :help syntax dentro de vim) útil para el resaltado de la sintaxis, ya que debe ser acompañado de otros parámetros como:

highlight ModeMsg cterm=bold ctermfg=2 ctermbg=black " mostrar modo ( --INSERT-- ) en verde
highlight StatusLine ctermfg=7 ctermbg=9	     " mostrar línea de estado activa en negro sobre blanco
highlight StatusLineNC ctermfg=8 ctermbg=9	     " mostrar línea de estado inactiva en blanco sobre gris
syntax on

Por si quieren agregar más opciones usamos :set all ,dentro de vim, para saber todas las que tenemos a disposición, que son muchísimas.

Hasta otro post y buenas vibras lectores.


Links de Interés

Web del Proyecto : http://www.vim.org/

Seven habits of effective text editing : http://www.moolenaar.net/habits.html

Libros recomendados: http://iccf-holland.org/click5.html

Esquemas de Colores: color scheme vim

Anuncios

5 comments

  1. Vim es uno de los grandes editores del mundo *nix, usado para administrar y programar sistemas. Su apariencia simple y sencilla da la impresión de ser una herramienta rustica y primitiva, pero cuando empiezas a usarlo y practicar los atajos de teclado te encuentras pronto digitando comando cortos y fáciles de recordar que junto a otros pueden llevar acabo tareas avanzadas (filosofía UNIX).

    La curva de aprendizaje es inclinada en un principio pero luego es una recta donde disfrutas el tener que editar texto y seguir aprendiendo nuevos atajos y características.

    El no tener que salir del teclado me parece una característica que evita perder el tiempo; vim parece estar pensado para la productividad y realizar tareas con un mínimo de movimientos del teclado.

    Yo suelo usar vim en el día a día (también emacs 😛 ) y debo decir que es uno de los editores más cómodos una vez sabes desenvolverte.

    Buen artículo para los que estén interesado en vim.

    P.D: También puedes lanzar vimtutor desde la terminal.

    Le gusta a 1 persona

      1. Yo aprendí (sigo aprendiendo) ambos al leer tantas “guerras santas” sobre cuál era mejor y foros donde se comparaban características del uno contra el otro sin llegar a un resultado objetivo. Mi conclusión: Ambos son poderoso y avanzados así que cualquiera que elijas aprender está bien (si aprendes lo dos mucho mejor).

        P.D: Tú blog tiene muy buena información, estaba leyendo el tema de los procesadores libres.

        Me gusta

      2. Realmente nunca se deja de aprender algo nuevo. Como bien dices, sea Vim o Emacs, ambas son herramientas muy poderosas. Me alegro que te guste la info, que comparto.
        Buen finde.

        Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s