Por qué.
Tarde o temprano me tocaba mirar esto de Vim. No hay nada que ahora mismo me falte en atom, pero parece que todo te lleva a Vim o a emacs, y escribir desde el propio terminal… tiene su cosa. Creo sinceramente que puede ser de mucha utilidad. Pero Vim no se parece a nada que haya visto antes, así que hay que ir despacio comprendiendo lo que vas viendo.
Vim es un editor modal, lo que quiere decir que tiene modos. El modo en el que arranca es el general, en el que puedes introducir comandos y utilizar las teclas para la edición del texto. Si presionas «i» entras en el modo insertar, en el que escribes como en cualquier otro editor. Con escape vuelves al general, y si presionas la «v» entras en el editor visual para seleccionar texto.
Así, de principio, ya una locura. Todavía no sé hacer muchas cosas, pero sí algunas.
Instalando.
Lo primero de todo es instalarlo, si no lo tienes ya instalado en tu distribución de linux. Para debian
$ sudo apt-get install vim
Se abre con $ vim
, y la versión gráfica con $ gvim
.
Lo básico.
Después es conveniente hacer el tutorial
$ vimtutor
Ahí aprenderemos, o lloraremos, algunos de los siguientes comandos básicos de Vim en el modo general.
h – izquierda
l – derecha
j – arriba
k – abajo
x – borrar la letra del cursor
dw – borrar palabra
d$ – borrar el resto de la frase
dd – borrar una linea, queda almacenada en el buffer
p – pegar esa linea
ndd – borrar n lineas
i – modo insertar
ESC – modo normal
:q! – forzar salida
:wq – salir guardando
u – deshacer el último mandato
U – deshacer una linea entera
CTROL-R – rehacer
r + letra – sustituye la letra por la nueva
R – abre reemplazar para reemplazar texto de una frase.
cw – borra el resto de la palabra y abre insertar para escribir
/ – para buscar hacia abajo
? – para buscar hacia arriba
n – siguiente ocurrencia de una búsqueda
% – busca el paréntesis al que corresponde otro inicial
:s/nuevo/viejo/ – la ocurrencia viejo es cambiada por nuevo
:s/nuevo/viejo/g – todas las ocurrencias de viejo en una línea
:#,#s/viejo/nuevo/g – las ocurrencias entre las líneas # y #
:#,#s/viejo/nuevo/gc – pide confirmación en cada ocurrencia
:%s/viejo/nuevo/g cambia viejo por nuevo en todo el documento
CTROL-G – muestra la posición del cursor en el fichero
Mayus-G – Mueve el cursor al final del documento
Número + Mayus-G – mueve el cursor a la línea del número.
:!comando – ejecuta un comando (ls, por ejemplo, para ver el directorio)
:w nombre – guarda el fichero con un nombre
:#,# nombre – guarda un fichero con las líneas entre ambos números
:r nombre – añade el contenido del fichero nombre al fichero actual
o – abre una línea bajo la que estamos y se pone en modo insert
O – abre una linea sobre la que estamos y se pone en modo insert
a – añade texto después del cursor.
A – añade texto al final de una línea.
Creo que será mejor enlazar a alguien que lo ha hecho mucho mejor que yo.
Ortografía.
Lo siguiente es el corrector de ortografía. Dentro de Vim:
:set spell spelllang=es
Descargará los archivos del idioma y lo utilizará para la sesión actual, si queremos fijarlo tendremos que abrir (o crear) el archivo de configuración en nuestro home
$ vim ~/.vimrc
y escribir en él
set spell
setlocal spell spelllang=es
Plugins.
Vim no es gonico y no tiene las utilidades que ya me daba atom (también con ellos), pero eso lo podemos solucionar con plugins. Lo primero será instalar un gestor si lo necesitas (yo sí), en mi caso vim-plug porque era el que recomendaba Goyo, un plugin del que hablaré más adelante, y estoy completamente perdido como para juzgar ahora mismo cuál es el mejor o el peor.
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
(O copiamos plug.vim dentro de la carpeta autoload)
Oks, ahora abrimos de nuevo .vimrc en home y añadimos los plugins
call plug#begin('~/.vim/plugged')
Plug 'https://github.com/junegunn/limelight.vim.git'
Plug 'https://github.com/plasticboy/vim-markdown.git'
Plug 'https://github.com/junegunn/goyo.vim.git'
Plug 'https://github.com/vim-airline/vim-airline.git'
Plug 'https://github.com/reedes/vim-pencil.git'
Plug 'https://github.com/scrooloose/nerdtree.git'
Plug 'https://github.com/xolox/vim-shell'
Plug 'https://github.com/xolox/vim-misc'
" Initialize plugin system
call plug#end()
Las dobles comillas al principio de una linea son el escape para poner un comentario.
Una vez en vim ejecutamos :PlugInstall para instalarlos.
Limelight pone el foco en el párrafo que estamos escribiendo. No sé si es útil o no, pero lo recomendaba el tipo de Goyo. Ideas semejantes en otros proc… editores… en otros programas para trabajar con texto no han terminado convenciéndome, pero instalado queda. Ya lo borraré si no me interesa. Se invoca dentro de Vim con :Limelight.
Vim-Markdown añade un montón de cosas que todavía no utilizo, pero sólo por marcarme el salto de línea y permitirme colapsar bloques de texto para tener un árbol del documento marcado por los # de los encabezados de markdown me lo quedo. Por lo que he visto tiene otro montón de funcionalidades que me van a venir muy bien. No se invoca, actua desde que arrancamos Vim. ¿Por qué? No tengo ni la más remota idea.
Goyo es lo que antes había visto con diferentes nombres como zen. Te centra el texto añadiendo márgenes y elimina las distracciones. Estupendo para escribir de un modo más legible. Se invoca dentro de Vim con :Goyo.
Vim-airline añade funcionalidades a la barra inferior, entre las que están las palabras que llevas escritas, y eso es todo lo que necesito. No se ve cuando activas Goyo, lo que es aún mejor para no sentir la tiranía del número. Este tampoco se invoca, simplemente está.
Vim-pencil hace que Vim ajuste el texto a la pantalla sin partir las palabras por la mitad. Se invoca con :SoftPencil. Hay otras opciones y un :HardPencil, pero a mí me sirve con eso, y lo que hace lo hace justo como quiero.
Nerdtree es otro punto que echaba de menos de atom, que es ver un arbol de los archivos que estoy editando. Lo más probable es que en la novela haya dividido los capítulos en archivos diferentes, con este plugin puedo saltar de uno a otro rápidamente. Se invoca con :NERDtree.
Vim-shell, sólo la utilizo por que con ella gvim tiene un F11 a pantalla realmente completa. Cuando vi las funciones completas me maree.
Vim-misc, lo necesitaba el anterior.
[Creo que necesitaría años para terminar de descubrir y aprender a utilizar lo que estos plugins hacen, más allá de lo que yo necesito que hagan.]
Conclusión.
Ya, es horrible. ¿Pero no es, al mismo tiempo, maravilloso?, ¿no?
No, no lo es. Parece la versión textual de matar moscas a cañonazos.
Vim es una opción a largo plazo, que permite ir aprendiendo poco a poco. Mientras no sea un estorbo, el hecho de poder convertirse en una estupenda herramienta según la vaya descubriendo para mí me es suficiente como incentivo.
En windows 7 lo utilizo desde el bash de git, la carpeta autostart está en /usr/shared/vim.
Nota.
Lo bueno del texto plano es que gran parte de esta entrada está escrita con Vim, pero donde encontraba problemas pasaba Atom y luego volvía a Vim. Ser el dueño de tu archivo y utilizarlo con lo que mejor te vaya en un momento dado no tiene precio. ¿Me quedaré con Atom, iré a Vim? Pues sólo depende de lo que me sea más útil.
Ahora
$ git commit -a -m "vim para escribir"
$ git push
y a Hacknet, del que ya hablaré otro día.