]> git.r.bdr.sh - rbdr/r.bdr.sh/blame - jekyll/_posts/2012-10-29-cuatro-tips-para-ser-un-buen-junkie-de-la-terminal.md
Adds recorderjs
[rbdr/r.bdr.sh] / jekyll / _posts / 2012-10-29-cuatro-tips-para-ser-un-buen-junkie-de-la-terminal.md
CommitLineData
4f3d7881
BB
1---
2layout: post
3title: Cuatro tips para ser un buen junkie de la terminal
4category: posts
23760dda
BB
5tags: espanol vim zsh tmux tips
6color: cyan
7header_image: tips-4-terminal.png
a9a6c060 8description: "Cuatro tips para mantener y/o amplificar tu adicción a la terminal. De manera legal! (woo)"
4f3d7881 9---
900ebffc
BB
10
11La terminal es un lugar bonito: todo es más rápido y conciso, puedes hacer más en un comando de lo que puedes hacer en una hora dando clicks, además, siempre te devuelve los libros que le prestas y no se queja si llegas repentinamente a su casa de visita; es casi perfecta. Así sin cambiar nada en cualquier sistema unixoso, ya sea una mac o linux o lo que sea que uses, puedes hacer mucho más de lo que creías que era posible con tan solo abrir una terminal y ponerte a regurgitar comandos.
12
13Lamentablemente no todo es bonito en el mundo de las terminales, oh no. La terminal es una adicción. Empieza de manera inocente: solo la abres para copiar algunas cosas o listar directorios, tal vez un grep de vez en cuando; o, "yo no quería usarla pero me dijeron que arreglaría mis problemas". Todos tenemos historias como esa, todos empezamos así, pero lo inocente pronto va escalando y ya no entras solo por un `ls` o un `cp`, ahora estás entrando a tu servidor por `ssh`; dejaste el `grep` y ahora usas `ack`; empiezas a usar tu source control sin GUI. Va empeorando cada vez más: Empiezas a ponerte nervioso cada vez que tienes que salir de la terminal, notas como el mouse no es tu amigo como lo pensabas, le gritas sudo a las personas cuando no quieren pasarte la salsa. Oh, es un problema muy grande y cada vez quieres más y más. Una vez que llegas a este estado no queda más que dejarse llevar, pero cada vez tocas límites más oscuros del internet: empiezas a buscar aplicaciones, tips, one-liners y plugins. ¡ALGUIEN PIENSE EN LOS NIÑOS!
14
c0a45f51 15Afortunadamente no tienes que buscar muy lejos, pues tengo aquí un programa de cuatro pasos para hacerte un mejor junkie de la terminal *(¿Qué, quién dijo algo sobre curar la adicción... que monstruo haría tal cosa?)*
900ebffc
BB
16
17## 1. Usa vim
18
c0a45f51 19`vim` es una droga bastante particular: ves a los usuarios veteranos y te sorprende la velocidad con la que hacen todo, parecen magos controlando texto; auténticos code-benders. Luego decides intentarlo y te quedas pasmado por aproximadamente quince minutos pensando: "¿Que significa normal? — ¿Dejé el horno prendido? — ¿Como empiezo a escribir? ... ¡creí que era un editor de texto!" y luego lo cerrarás con un gran sentido de confusión solo para reintentarlo cuando el siguiente artículo sobre `vim` llegue al frontpage de Hacker News. Pero no te rindas:
900ebffc 20
c0a45f51 211. Es normal sentirse así.
900ebffc
BB
222. Todo va a mejorar.
233. Vas a subestimar lo que quiero decir con "Todo va a mejorar".
244. Code-bending.
25
c0a45f51 26Empezar con `vim` es una experiencia más bien rara porque no estás acostumbrado a usar un editor con esa filosofía, y eso toma práctica; es como aprender un nuevo lenguaje. Mi consejo es el siguiente: avientate un tutorial básico, luego usa vim, luego usa vim, luego usa vim y luego por dios y todo lo sagrado usa vim. Los comandos tienen que grabarse en tu memoria muscular y la mejor forma de hacerlo es usandolos una y otra vez. Guarda un [cheat sheet][vim-cheat2] y consultalo cuando no sepas que hacer y sigue trabajandolo. — Ah, si, una recomendación que puede no ser muy popular en algunos círculos es que no instales plugins cuando estés empezando: aprender a usar lo que el editor solo te ofrece te ayudará a conocer más el núcleo y te hará rápido sin hacerte dependiente en una serie de add-ons que pueden o no existir en el `vim` de tu abuelita (si, tu abuelita lo usa y es muy buena con él, pero no instala plugins — bueno, solo CtrlP)
900ebffc 27
c0a45f51 28Es común que durante tus primeros hits de `vim` quieras dejarlo y volver al abrazo cálido y familiar de tu editor de costumbre. No. Lo. Hagas. Sigue editando hasta que te sangren los dedos y obligate a usarlo hata que te sientas cómodo: Una vez que superes la barrera inicial, irás haciendote más rápido, más rápido, hasta el grado en que te empieza a molestar no tener los controles de `vim` en los clientes de correo, en los `<textarea>` y en los cuadernos de composición.
900ebffc 29
c0a45f51 30Un tutorial recomendado es `vimtutor`: corriendo ese comando en la terminal, podrás seguir un útil tutorial guiado usando el mismo editor. Puedes complementarlo con [uno de tantos][vim-cheat2] [Cheat Sheets.][vim-cheat1]
900ebffc
BB
31
32## 2. Usa tmux
33
c0a45f51 34¿Qué es mejor que una terminal? ¡Muchas terminales!. Cantidades enormes de terminales entre las que te puedes mover con el teclado. `tmux` o `terminal multiplexer` es una aplicación que te ayuda a partir tus sesiones de terminal en pestañas y páneles para particionar tu pantalla y organizar mejor tus diferentes terminales. ¿Cuál es el beneficio? Pues todo depende de para que lo uses; en mi caso: Puedo poner `vim` en la mitad izquierda de la pantalla y dos sesiones de `zsh` en la otra mitad, una arriba de la otra; en la de arriba puedo correr comandos como `ack` y `tree`, o hacer operaciones en el disco; en el otro puedo tener el servidor de rails, un irb o algun log con `less` o `tail`; cuando tengo el monitor extra conectado puedo poner una columna con la letra de la canción que estoy escuchando en rdio; también podría tener `vim` y `zsh` en una pestaña, `irb`, `rails s` o `mongo` en otro; o puedo tener un proyecto de rails en un tab, cada rack engine que esté usando en otro y el server de staging en ssh en otro... `htop` en bla bla bla bla bla bla ... De verdad cambia como organizas tu trabajo.
900ebffc 35
c0a45f51 36La otra cosa que hace muy bien es permitirte despegarte de una sesión para reconectarte luego. Puedes abrir una sesión de `tmux` para un proyecto, y cuando ya quieras olvidarte de el simplemente te despegas de la sesión y vuelves a tu terminal normal o empiezas a trabajar en otro proyecto. Cuando quieras volver a el, solo vuelves a pegarte a la sesión y de nuevo estarán tus ventanas como las habías dejado. Es bastante sorprendente el cambio que hace poder "entrar y salir" de contextos: cuando vuelves a la posición de un proyecto anterior, es como si tu cerebro se cambiara de modo al mismo en que estabas cuando lo dejaste. Incluso puedes cerrar la terminal y seguirán ahí (solo no apagues la computadora, para eso hay que seguir leyendo)
900ebffc 37
c0a45f51 38Además, te hace ver interesante.
900ebffc 39
c0a45f51 40Si quieres configurar mejor tu `tmux` y aprender algo sobre que puede hacer, recomiendo [esta guía][tmux1] [en dos partes][tmux2].
900ebffc
BB
41
42### Extra hit: tmuxinator ###
43
c0a45f51 44Si empiezas a usar `tmux` y quieres tener más control sobre como empezar proyectos y que hacer en caso de que apagues la computadora y se mueran tus sesiones, entonces necesitas [`tmuxinator`][tmuxinator]: una gema de ruby que te permite definir tus pestañas, páneles y los comandos que correrá cada uno en un conveniente archivo de yaml que se usará para generar tu ambiente cada vez que tenga que reiniciar la sesión.
900ebffc
BB
45
46## 3. Sincroniza tus dotfiles
47
c0a45f51 48Llega un punto en la vida de todo junkie en la cual tiene que usar una computadora nueva, prestada o robada. Ach! Terrible. Después de todo el tiempo que invertiste configurando tu prompt, tus opciones de `ack`, tu configuración de `vim`, tu profile de `bash` o `zsh`; solo para perderlo todo. Llegas a un triste prompt blanco y vacío y tienes tres opciones: a) re-configuras todo hasta un modo aceptable, b) usar la terminal en modo vainilla, o c) pasar tus archivos de configuración de una maquina a otra.
900ebffc 49
c0a45f51 50Obviamente, la razón más sana es c), pero cargar los archivos es una molestia y además, ¿Qué pasa si luego modificas una en otra maquina? o ¿Qué pasa si tienes que usar la terminal remota de un hermitaño que no te permite conectar dispositivos físicos? ... Si tan solo *git* hubiera *git* algo *git* que haga *git* el manejo *git* de versiones de archivos de texto *giiiiit* de una manera *giiiiiiiit* distribuida y que además sea fácil *giiiiiiiiiiiiiiiit* de *giiiiiiiiiiiiiiiiiiiiiit*....
900ebffc
BB
51
52`git`.
53
c0a45f51 54Puedes crear un directorio `.dotfiles` en tu directorio base y hacer un repo de git ahí y meter todos tus "dotfiles" como `.bash_profile` o `.ackrc` o todo el directorio `.vim`. Luego solo es cuestión de hacer links a su lugar original y ahora podrás clonar tu repo y reaplicar tus configuraciones en cualquier maquina que tenga git. ¿Y si no tiene `git`? ¿Por qué no lo tiene? ¿Por qué la estas usando? ¿De quién es? ¿Quién podría estar a la puerta a estas horas? ¿Acaso es el dueño de la computadora? Ahora si que estás en problemas.
900ebffc 55
c0a45f51 56Si tienes dudas, puedes consultar [esta buena guía][dotfiles] para tener tus dotfiles sincronizados en "la nuuuubeeeeee" *(agregue un efecto de arcoiris)*.
900ebffc
BB
57
58## 4. Usa zsh
59
c0a45f51 60`bash` es una buena terminal y ha sido mi amiga desde hace años: hemos vivido tantas cosas juntos que se podría decir que nuestra relación es tal que solo una persona superficial la dejaría. Pues soy superficial, y la dejé. Por algo mejor: `zsh`.
900ebffc 61
c0a45f51 62¡Blasfemia! ¿Qué podría tener de mejor `zsh`? Una lista de mis features favoritos:
900ebffc
BB
63
64* Autocomplete en los parametros de comandos *(e.g. con kill te muestra una lista de procesos y con git te muestra los comandos como checkout, merge, etc.)*
65* Autocompletado interno de paths *(e.g. /Us/be/Do/pr/m + tab => /Users/benbeltran/Documents/projects/my-project.)*
66* Historial compartido.
c0a45f51 67* Correción de errores *(e.g. si escribes vmi, te preguntará si no quieres decir vim :)*
900ebffc 68* Poder navegar con las flechas cuando aparecen las opciones para tab completion
c0a45f51 69* Globbing avanzado que te permite hacer operaciones avanzadas como seleccionar solo los symlinks de un subdirectorio, o solo los directorios que tengan cierto patrón. * Muchos, muchos plugins.
900ebffc 70
c0a45f51 71La mejor forma de disfrutar `zsh` es utilizando [oh-my-zsh][oh-my-zsh]: una forma sencilla de instalar `zsh` con una buena cantidad de plugins, temas y configuraciones que te harán la vida más fácil. Yo personalmente uso una versión modificada del tema "prose", pero hay mucha variedad para elegir.
900ebffc
BB
72
73---------------------------------
74
c0a45f51 75Espero que haya sido de utilidad para esos junkies que estan buscando que más pueden hacer con su terminal, y espero que caigan más y más en el vicio. Si quieres regañarme o exigirme pago por algún destrozo que haya causado en tu casa, o si le molesta que lo tutee, puede encontrarme en [twitter][twitter] o por [correo / jabber][mail].
900ebffc
BB
76
77[vim-cheat1]: http://www.viemu.com/vi-vim-cheat-sheet.gif
78[vim-cheat2]: http://www.tuxfiles.org/linuxhelp/vimcheat.html
79[tmux1]: http://blog.hawkhost.com/2010/06/28/tmux-the-terminal-multiplexer/
80[tmux2]: http://blog.hawkhost.com/2010/07/02/tmux-%E2%80%93-the-terminal-multiplexer-part-2/
81[tmuxinator]: https://github.com/aziz/tmuxinator
82[dotfiles]: http://blog.smalleycreative.com/tutorials/using-git-and-github-to-manage-your-dotfiles/
83[oh-my-zsh]: https://github.com/robbyrussell/oh-my-zsh
84[twitter]: https://twitter.com/benbeltran
85[mail]: mailto:ben@nsovocal.com
23760dda 86[junkie-header]: /img/articles/junkie/junkie-header.png