<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bitácora de Vuelo (Publicaciones sobre vim)</title><link>http://blog.taniquetil.com.ar/</link><description></description><atom:link href="http://blog.taniquetil.com.ar/categories/vim.xml" rel="self" type="application/rss+xml"></atom:link><language>es</language><copyright>Contents © 2024 &lt;a href="mailto:facundo@taniquetil.com.ar"&gt;Facundo Batista&lt;/a&gt; CC BY-NC-SA</copyright><lastBuildDate>Sat, 17 Aug 2024 16:42:41 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Mi experiencia con VSCode</title><link>http://blog.taniquetil.com.ar/posts/0870/</link><dc:creator>Facundo Batista</dc:creator><description>&lt;section id="el-disparador"&gt;
&lt;h2&gt;El disparador&lt;/h2&gt;
&lt;p&gt;Con motivo del cambio de laburo hace unos meses arranqué con una máquina limpia de cero. Parte de la instalación de siempre es armar mi entorno de desarrollo, particularmente instalar Vim, aunque no sólo lo uso para desarrollar sino que también es mi editor de cabecera para todo lo que necesite (por ejemplo, escribir los posts de este blog).&lt;/p&gt;
&lt;p&gt;Como venía haciendo hace un par de años, instalé &lt;a class="reference external" href="https://neovim.io/"&gt;Neovim&lt;/a&gt; (el Vim más moderno y piola para usar, aunque es sólo de terminal) y &lt;a class="reference external" href="https://github.com/equalsraf/neovim-qt"&gt;Neovim Qt&lt;/a&gt;, una interfaz gráfica para Neovim (no la única, pero la que mejor me funcionó de las que exploré y evalué en su momento).&lt;/p&gt;
&lt;p&gt;¿Por qué una interfaz gráfica? Mucha gente me "plantea" que usar el editor de la terminal es suficiente, pero yo prefiero otra cosa.&lt;/p&gt;
&lt;p&gt;Estoy muy acostumbrado a trabajar todo desde la terminal, disparar procesos, moverme por los directorios, etc., y cuando quiero editar algo no quiero que el editor se me abra &lt;em&gt;en esa terminal&lt;/em&gt;, ocupándomela, sino que quiero que se levante como una ventana independiente y me deje seguir trabajando en la terminal que estaba. Además me gusta poder abrir varios editores en distintas ventanas para poder trabajarlas en paralelo (¡y todavía mantener la terminal aparte!).&lt;/p&gt;
&lt;p&gt;Volviendo a Neovim Qt. En su momento la versión estable tenía algunos problemitas, y empecé a usar directamente las releases "nocturnas". Y ahora, que instalé la máquina de cero, también instalé Neovim y Neovim Qt. Tristemente vi que era prácticamente inusable, porque tiraba unos mensajes por cada tecla que apretaba, lo que luego de investigar un poco aprendí que se debía a un detalle de la adaptación entre el programa en sí (Neovim) y la parte gráfica (Neovim Qt).&lt;/p&gt;
&lt;p&gt;En otro momento me hubiese puesto a ver cómo se podía solucionar, o qué versión "no tan reciente" instalar para intentar que el problema desaparezca. Pero como tambien tenía otros detalles que venía arrastrando (quizás el que más me molestaba era la imposibilidad de abrir un editor tomando la entrada de &lt;code class="docutils literal"&gt;stdin&lt;/code&gt;, e.g. &lt;code class="docutils literal"&gt;./algo | &lt;span class="pre"&gt;nvim-qt&lt;/span&gt;&lt;/code&gt;), decidí salir un poco de la zona de confort y probar algo por otro lado.&lt;/p&gt;
&lt;img alt="Vamos a explorar" src="http://blog.taniquetil.com.ar/images/vscode1/explorar.jpeg"&gt;
&lt;/section&gt;
&lt;section id="que-alternativa"&gt;
&lt;h2&gt;¿Qué alternativa?&lt;/h2&gt;
&lt;p&gt;Seguro que no quería cambiar solamente la forma en que programaba. Yo uso al editor de texto para mil cosas, no sólo para trabajar con un lenguaje de programación, así que estaba decidido a encontrar algo que no sirviese solamente para programar (como por ejemplo &lt;a class="reference external" href="https://www.jetbrains.com/es-es/pycharm/"&gt;PyCharm&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Al mismo tiempo estaba con ganas de probar "algo bien moderno", para poder descubrir o encontrar funcionalidades o formas de trabajar a las que no estaba acostumbrado.&lt;/p&gt;
&lt;p&gt;Luego de ver algunas opciones, terminé eligiendo &lt;a class="reference external" href="https://code.visualstudio.com/"&gt;Visual Studio Code&lt;/a&gt;, un editor para texto puro o cualquier lenguaje de programación, del cual me habían hablado bien en más de una ocasión.&lt;/p&gt;
&lt;p&gt;Igual, antes de "pegar el salto" probé que algunas cosas básicas que necesitaba que funcionen sí o sí. Por ejemplo poder abrir un archivo lanzándolo desde la terminal, o tener muchas ventanitas sueltas y no todo apretado/junto en una sola gran ventana.&lt;/p&gt;
&lt;img alt="Probando cosas por primera vez" src="http://blog.taniquetil.com.ar/images/vscode1/chipa.jpeg"&gt;
&lt;/section&gt;
&lt;section id="impresiones-luego-de-algunas-semanas"&gt;
&lt;h2&gt;Impresiones luego de algunas semanas&lt;/h2&gt;
&lt;p&gt;VSCode es muy flexible. Es básicamente un editor genérico con un amplio esquema de extensiones y una buena gestión de la configuración.&lt;/p&gt;
&lt;p&gt;Particularment me encanta como está manejada la configuración. La misma se puede trabajar a través de la interfaz gráfica (incluyendo la posibilidad de buscar), y te indica si las opciones corresponden al editor en sí o alguna extensión, se pueden cambiar cosas a nivel global o por proyecto, todo tiene un título, una explicación, e incluso una indicación de si fue modificado el valor original (como el segundo item de la siguiente captura).&lt;/p&gt;
&lt;img alt="Captura de un pedacito de la config" src="http://blog.taniquetil.com.ar/images/vscode1/config.png"&gt;
&lt;p&gt;Además, todo eso termina siendo escrito en un archivo de texto relativamente fácil de editar a mano (es un JSON), con lo que si hay alguna configuración muy oscura que todavía no está representada en la parte gráfica, se puede agregar a ese archivo y listo!&lt;/p&gt;
&lt;p&gt;Con lo que son las extensiones (o "plugins" o "add-ons") no estoy tan contento. El editor descansa en este código de terceros para funcionalidades muy básicas, con lo cual todo termina siendo una extensión que hay que elegir e instalar aparte. Y las extensiones, en algún punto, compiten entre si porque no todo puede estar 100% coordinado (por ejemplo, atajos de teclado).&lt;/p&gt;
&lt;p&gt;Al final, todo anda casi bien, pero nunca termina de funcionar del todo bien y es bastante molesto.  Particularmente, estoy bastante frustrado con el autocompletado. Es básico, no puede no funcionar. Ya probé un par de extensiones y ninguna encaja bien. :(&lt;/p&gt;
&lt;p&gt;Creo que derivado de tener muchas extensiones, un efecto secundario bastante molesto es que tarda en arrancar. Y no maneja bien el levantar las extensiones de forma asincrónica. Por ejemplo si abro un editor limpio (cosa que yo hago muy seguido, tengo mapeado el &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;ctrl-alt-g&lt;/span&gt;&lt;/code&gt; a nivel de sistema) y me pongo a escribir rápido, parte de lo que tecleo VSCode lo toma &lt;em&gt;antes&lt;/em&gt; de cargar la extensión de Vim. Entonces eso que escribí no se &lt;em&gt;deshace&lt;/em&gt; si apreto &lt;code class="docutils literal"&gt;u&lt;/code&gt;, o si puse &lt;code class="docutils literal"&gt;/&lt;/code&gt; me escribe la barra en vez de ir abajo y empezar a buscar...&lt;/p&gt;
&lt;img alt="Situación donde importa muy poco si tarda en arrancar" src="http://blog.taniquetil.com.ar/images/vscode1/playa.jpeg"&gt;
&lt;/section&gt;
&lt;section id="que-cosas-modernas-encontre"&gt;
&lt;h2&gt;¿Qué cosas "modernas" encontré?&lt;/h2&gt;
&lt;p&gt;Disclaimer: no son modernas per se, son cosas que Vim básico no trae, y yo por H o por B nunca habilité/agregué a mi setup de trabajo.&lt;/p&gt;
&lt;p&gt;Me está gustando el modelo de, cuando estoy trabajando en un proyecto grande (y no editando archivos o código suelto por ahí), tener las distintas ventanas como pestañas de una gran ventana, con la flexibilidad de poder "separarla" y ponerla a un costado para poder trabajar viendo dos archivos al mismo tiempo.&lt;/p&gt;
&lt;p&gt;Eso se complementa muy bien con tener de forma gráfica el árbol de directorios y archivos del proyecto, y la habilidad del editor de mostrarme "dónde esto que estoy marcando está usado en el resto del proyecto" o "dónde está eso definido". Me permite explorar y entender código un poco más rápido de la técnica que usaba antes.  Dicho eso, obvio que sigo usando lo de "disparar abrir la ventana desde una terminal" en casi todos los casos fuera de trabajar en un proyecto, o búsquedas más avanzadas desde la línea de comando (la combinación de &lt;code class="docutils literal"&gt;find&lt;/code&gt; y &lt;code class="docutils literal"&gt;grep&lt;/code&gt; es muy poderosa).&lt;/p&gt;
&lt;p&gt;Tengo que darle alguna segunda oportunidad a que me muestre atributos de objetos o parámetros de una función. Siempre que lo tuve me resultó muy intrusivo... entiendo que hay gente que va codeando haciendo click en opciones, pero me resulta muy molesto que se me abran ventanas todo el tiempo sobre el cursor cuando voy tecleando. Tengo que ver a más gente usarlo en vivo y aprender de esa experiencia.&lt;/p&gt;
&lt;img alt="Moderno :)" src="http://blog.taniquetil.com.ar/images/vscode1/moderno.jpeg"&gt;
&lt;/section&gt;
&lt;section id="proximos-pasos"&gt;
&lt;h2&gt;Próximos pasos&lt;/h2&gt;
&lt;p&gt;Creo que puedo declarar como exitosa la fase primera del experimento. Momento de pasar a la segunda etapa.&lt;/p&gt;
&lt;p&gt;Básicamente ahora el plan es volver a arrancar desde cero. Con un VSCode "de fábrica", todo limpio, ir agregando las configuraciones de nuevo, ahora que entiendo todo mejor, con la idea de eliminar todas las mugres que indefectiblemente se van amontonando por ir explorando e ir probando cosas que realmente no eran las correctas o no tenían sentido.&lt;/p&gt;
&lt;p&gt;Habiendo dicho eso, sí hay un cambio "fuerte" que voy a incorporar en esta fase, que es la de cambiar el plugin para Vim. Hoy estoy usando &lt;a class="reference external" href="https://github.com/VSCodeVim/Vim"&gt;el que creo que es el oficial&lt;/a&gt; pero tiene algunos mocos bastante molestos, y quiero probar &lt;a class="reference external" href="https://github.com/vscode-neovim/vscode-neovim"&gt;el de Neovim&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Y también aprovechar para darle un segundo empuje al intentar arreglar algunos detalles que todavía no tengo funcionando de forma correcta, principalmente el corrector ortográfico (no puedo cambiar fácil entre idiomas) y el autocompletado.&lt;/p&gt;
&lt;p&gt;Veremos como evoluciona. &lt;em&gt;Stay tuned.&lt;/em&gt;&lt;/p&gt;
&lt;/section&gt;</description><category>editor</category><category>interfaz</category><category>programar</category><category>terminal</category><category>ventana</category><category>vim</category><category>visual studio code</category><guid>http://blog.taniquetil.com.ar/posts/0870/</guid><pubDate>Sat, 17 Aug 2024 16:28:00 GMT</pubDate></item><item><title>Finalmente me fui de gVim</title><link>http://blog.taniquetil.com.ar/posts/0801/</link><dc:creator>Facundo Batista</dc:creator><description>&lt;p&gt;Finalmente, luego de mucho tiempo, me fui de gVim, el Vim integrado a interfaz gráfica con base en Gnome.&lt;/p&gt;
&lt;p&gt;Me funcionaba, y lo usaba a diario, todo el tiempo, pero me pasó varias veces que quería mejorar algo, modernizarlo, agregarle un plugin tal, toquetearlo en algo puntual, y me trababa. Es que el proyecto no estaba del todo activo y había quedado un poco antiguo. Además ahora estoy basado en KDE, y era medio a contramano seguir instalando mucho de Gnome solo para gVim.&lt;/p&gt;
&lt;p&gt;Y ahora me liberé, dejé el pasado, me renové, soy un hombre nuevo.&lt;/p&gt;
&lt;a class="reference external image-reference" href="https://youtu.be/vjh3uMYvzQQ?t=189"&gt;&lt;img alt="Bueno, tampoco para tanto, Carlos" src="http://blog.taniquetil.com.ar/images/nvim-infeliz.png"&gt;&lt;/a&gt;
&lt;p&gt;Ahora soy un feliz usuario de &lt;a class="reference external" href="https://neovim.io/"&gt;Neovim&lt;/a&gt;. Basicamente un Vim modernizado, con muchos defaults pensados correctamente para este siglo, con un desarrollo activo, y la mar en coche. Si quieren profundizar en qué (y qué no) es neovim, pueden leer sobre &lt;a class="reference external" href="https://neovim.io/charter/"&gt;su visión acá&lt;/a&gt;. Gracias &lt;a class="reference external" href="https://twitter.com/fisadev"&gt;Fisa&lt;/a&gt; por insistirme varias veces en hacer el cambio.&lt;/p&gt;
&lt;p&gt;Traté un par de veces usar Neovim en el pasado, pero enseguida me chocaba con una limitación de uso bastante específica. Es que Neovim (como el Vim "pelado") cuando los ejecutás desde la terminal te usan esa terminal para su interfaz. A mi NO me gusta eso, yo estoy en la terminal manejando un proyecto o yendo de acá para allá, y en el momento en que abro un archivo, NO quiero que me ocupe esa terminal, sino que se abra en una nueva ventana. Y tiene que ser una nueva ventana, no una nueva pestaña, porque yo quiero poder ver varios archivos al mismo tiempo (y me es importante la ubicación espacial de las distintas ventanas).&lt;/p&gt;
&lt;p&gt;Entonces busqué y probé varias "interfaces gráficas para nvim" pero con todas tenía algún problema (fue una exploración poco prolija, no tengo buen feedback para darles en este punto). Así y todo, com Neovim se corre en una terminal, pensé en que cada vez que abra un archivo disparar una terminal nueva con Neovim ahí adentro. Y medio lo solucioné haciendo que &lt;code class="docutils literal"&gt;vi&lt;/code&gt; sea un alias de "abrir una ventana nueva con una consola ahí adentro que me ejecutara nvim editando el archivo que especifiqué", aunque esto me llevó un tiempo porque intenté hacerlo con &lt;code class="docutils literal"&gt;konsole&lt;/code&gt; (de nuevo, KDE) pero crasheaba casi siempre luego de cerrar el editor (!): lo terminé haciendo con &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;gnome-console&lt;/span&gt;&lt;/code&gt;, que andaba mejor... no me gustó del todo, pero andaba lo suficientemente bien.&lt;/p&gt;
&lt;p&gt;Pero en su momento nunca terminé de pasar a Neovim porque me trabé con tratar de hacerle andar &lt;code class="docutils literal"&gt;flake8&lt;/code&gt;, el analizador estático de código Python que yo tengo integrado en &lt;code class="docutils literal"&gt;gVim&lt;/code&gt;, funcionalidad que considero indispensable en el día a día. Por una cosa u otra, no tuve tiempo de seguir probando, y lo abandoné.&lt;/p&gt;
&lt;img alt="Siempre hay otra manera" src="http://blog.taniquetil.com.ar/images/nvim-anotherway.png"&gt;
&lt;p&gt;Luego vino la PyCon 2019, y Fisa dio una lightning talk sobre &lt;a class="reference external" href="http://vim.fisadev.com/"&gt;su famosa configuración para Vim&lt;/a&gt;, mencionó que instalar todo era sencillo, y yo me decidí a probarlo. Además volví a pegarle una mirada a ver qué GUI encontraba y me choqué con &lt;a class="reference external" href="https://github.com/equalsraf/neovim-qt"&gt;neovim-qt&lt;/a&gt; que funcionó super piola.&lt;/p&gt;
&lt;p&gt;Hoy puedo decir que me convertí. Pero el camino no fue sencillo.&lt;/p&gt;
&lt;p&gt;Por lo pronto, la instalación de Neovim y neovim-qt es bastante a mano, porque son proyectos muy nuevos y prefiero usar las últimas versiones disponibles. Para Neovim lo que hice fue bajar &lt;a class="reference external" href="https://github.com/neovim/neovim/releases"&gt;la appimage de neovim&lt;/a&gt;, hacerla ejecutable y moverla/renombrarla a &lt;code class="docutils literal"&gt;/usr/local/bin/nvim&lt;/code&gt;. Y para neovim-qt cloné el proyecto, lo &lt;em&gt;buildeé&lt;/em&gt; (instrucciones en el README), y copié el ejecutable a &lt;code class="docutils literal"&gt;/usr/local/bin/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Después arranqué con la config de Fisa y empecé a entenderla y agregarle los detalles que yo necesitaba. Luego la cantidad de cambios creció. En un momento me dí cuenta que en algunos casos me resultaba lento y al debuguear era por plugins que no me interesaban, entonces decidí realizar una limpieza de todo lo que no quería. Al final terminé forkeando el proyecto y ahora tengo &lt;a class="reference external" href="https://github.com/facundobatista/fisa-vim-config"&gt;esta config&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Entonces, luego de instalar Neovim y neovim-qt, todo lo que hago es llevar (o &lt;em&gt;symlinkear&lt;/em&gt;) los archivos &lt;code class="docutils literal"&gt;init.vim&lt;/code&gt; y &lt;code class="docutils literal"&gt;ginit.vim&lt;/code&gt; de ese proyecto-config mío a &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/nvim/&lt;/span&gt;&lt;/code&gt;, abrir un editor y esperar que la magia que armó Fisa instale todos los plugines y deje todo pipícucú.&lt;/p&gt;
&lt;p&gt;Y &lt;em&gt;vualá&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Como frutilla del postre, les cuento que con Fisa armamos un grupo de Telegram para &lt;a class="reference external" href="https://t.me/ayuda_vim"&gt;ayuda de Vim en español&lt;/a&gt;. Que lo disfruten.&lt;/p&gt;</description><category>editor</category><category>Fisa</category><category>gVim</category><category>Neovim</category><category>neovim-qt</category><category>nvim</category><category>vi</category><category>vim</category><guid>http://blog.taniquetil.com.ar/posts/0801/</guid><pubDate>Wed, 22 Jan 2020 22:03:00 GMT</pubDate></item><item><title>Películas y configuración</title><link>http://blog.taniquetil.com.ar/posts/0057/</link><dc:creator>Facundo Batista</dc:creator><description>&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Batman begins: +1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Be cool: +0&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Me cansé de medio configurar &lt;strong&gt;vim&lt;/strong&gt; cada vez que estoy en una máquina diferente, así que preparé la configuración que me gusta, la copio acá, y luego ya la tengo. Lo siguiente va en el archivo de configuración local de &lt;strong&gt;vim&lt;/strong&gt; (en Ubuntu es el &lt;code class="docutils literal"&gt;/etc/vim/vimrc.local&lt;/code&gt;).:&lt;/p&gt;
&lt;pre class="literal-block"&gt;" no pone tabs, sino 4 espacios
set expandtab
set tabstop=4

" hace backups antes de grabar en /tmp
set backup
set backupdir=/tmp

" prende el coloreado de sintáxis
syntax on

" va buscando mientras tecleamos, resalta lo que encuentra
set incsearch
set hlsearch

" cambiamos para que se vea mejor lo que busca
highlight Search ctermfg=black ctermbg=lightgreen&lt;/pre&gt;</description><category>configuración</category><category>películas</category><category>vim</category><guid>http://blog.taniquetil.com.ar/posts/0057/</guid><pubDate>Fri, 01 Jul 2005 04:29:19 GMT</pubDate></item></channel></rss>