563 - Abandono Emacs por Vi

563 - Abandono Emacs por Vi

En la línea de comandos de #fish, como en #bash y #zsh tienes dos modos, el de #emacs y el de #vi … He decidido abandonar el modo emacs por vi

1:25
-3:15

Como últimamente hay tanta algarabía en el grupo de Telegram de atareao con Linux, en referencia a la supuesta eterna batalla, entre Emacs y Vi, he querido poner un poco de sal en nuestras vidas, con este título tan llamativo. No, nunca he utilizado Emacs, y por el momento no lo voy a utilizar. Ahora mismo tengo demasiados frentes abiertos como para abrir un nuevo frente, sabiendo que ese nuevo frente es todo un agujero negro capaz de absorber hasta la luz. Entonces, ¿a que me refiero cuando digo que abandono Emacs por Vi?. Básicamente me refiero a la línea de comandos. Si, así es, ¿no lo sabías? En la línea de comandos tienes la posibilidad de utilizar el funcionamiento de Vi o el de Emacs. Y digo funcionamiento, y no atajos de teclado, porque en el caso de Vi, puedes utilizar los distintos modos de Vi. Así que vamos a mis razonamientos.

Abandono Emacs por Vi

Un paseo por el pasado

Como te decía en la introducción, es posible utilizar tanto los modos de Vi, como los atajos de teclado de Emacs en la línea de comandos. O mejor dicho, puedes utilizar unos u otros, pero no ambos de forma simultánea.

Esto es algo que conozco desde hace años, sin embargo, por defecto, hasta la fecha, siempre había utilizado los atajos de teclado de Emacs, y salvo en alguna ocasión puntual, no me había planteado la opción de cambiar. Al menos hasta la fecha.

Sin embargo, tal y como comenté en el episodio 559 del podcast que titulé Fish ha revolucionado mi terminal de Linux, hace algún tiempo decidí cambiar mi shell por defecto de Zsh a Fish, y esto ha llevado algún que otro cambio adicional, como es el cambio de algunos scripts, el reemplazo de alias por abreviaturas, y esta última, el cambio de modo Emacs por Vi, entre otros.

¿Por qué abandonar Emacs por Vi en la línea de comandos?

Las razones que me ha llevado a abandonar a Emacs por Vi en la línea de comandos, son dos,

  • Al estudiar con detenimiento el uso interactivo, he visto que al igual que sucede con otras shell también ofrecía utilizar los modos de Vi, y he pensado ¿y por qué no?. Es decir, ha sido un simple recordar.
  • La segunda de las razones, es que me resulta mas sencillo editar directamente en la línea de comandos, de lo que me resultaba en Bash o Zsh. Otra cosa es si debería o no debería hacerlo.

¿Por qué me resulta mas sencillo editar con Fish en la línea de comandos?

Por supuesto, que te estarás preguntado, si no conoces Fish, porque me resulta mas sencillo editar con Fish en la línea de comandos. Son varias razones, y te las voy detallando a continuaciópn.

Las posibilidades de edición multilínea de Fish

En Fish, es posible escribir un comando en varias líneas de distintas formas,

  • Si estás escribiendo un bloque, por ejemplo, un bucle for, o un if, mientras no cierres el bloque, cuando pulses Enter, pasarás a una nueva línea.
  • Otra opción es utilizar Alt + Enter en lugar de utilizar Enter. Esto equivale a que ejecutes dos o mas comandos.
  • Y la tercera opción para realizar edición multilínea es añadiendo una barra \ al final de cada línea.

No todas estas opciones están disponibles en otras shell. En especial, la referente a los bucles, y esto facilita enormemente el trabajo. Además cuando recuperas un comando multilínea te lo restaura en multilínea, cosa que en otras shell, tampoco sucede.

Copiar y pegar

Copiar y pegar utilizando me resulta mucho mas sencillo con Vi, que con los atajos de teclado de Emacs. Sinceramente, me resulta mas intuitivo, y esto me lleva a que me encuentre mas cómodo al hacerlo de esta forma.

El propio uso de Neovim

Por último, y algo que encontrarás totalmente lógico, es que al usar a diario Neovim, tengo interiorizado sus modos, sus atajos de teclado, su todo. Mi memoria muscular está acostumbrado ese funcionamiento. No tengo que pensar para modificar, editar, cambiar de modo, etc. Lo hago por pura inercia, y en ocasiones, en otros entornos, también lo hago. Con todo esto, te quiero decir, que es muy normal para mi utilizar todos esos atajos de teclado de Vi.

¿Tiene sentido cambiar el modo de Emacs a Vi?

Sinceramente, y en general, No. Y es que el modo Emacs tiene una ventaja, muy poderosa sobre el modo Vi, Emacs es el modo predeterminado. Solo esta ventaja es suficiente para que ni siquiera pienses en cambiar tu modo de shell. De verdad, ni siquiera te lo pienses.

La mayoría de las shell utiliza los atajos de teclado de Emacs, lo que significa que *puedes sentarte delaten de un terminal no configurado, como el *shell interactivo de Python* y comenzar a trabajar.

¿Que probabilidad hay que la persona con la que estás trabajando tenga habilitado el modo Vi? Yo te lo digo, bajísima por no decirte casi nula.

Además, con el modo Emacs, solo necesitas aprender unos pocos atajos de teclado que vas a utilizar frecuentemente para acelerar significativamente el uso de la terminal.

La mayoría de las tareas de edición en la línea de comandos, que sean mas complicados, las vas a hacer, o las puedes hacer aprovechando las características de tu shell. Por ejemplo, si quieres reemplazar parte de lo que has ejecutado anteriormente, lo puedes hacer con !!:gs/origen/reemplazo/.

Aunque sinceramente, la mayoría de los que estamos delante de un terminal, lo que terminamos haciendo, es simplemente levantando las manos del teclado, cogiendo el ratón y copiar y pegar. Recuerda ese meme que circula por internet de un usuario pulsando repetidas veces Ctrl+r en busca de un comando que ejecutó hace 30 sentencias, en lugar de volver a escribirlo.

Aprender el modo Emacs

Lo cierto es que lo mas recomendable antes de pensar en cambiar al modo Vi, es Aprender el funcionamiento de tu Shell. Aprender a usar variables, incluyendo las incorporadas como $HOME, $PWD y $?, aprender a usar el historial, las tuberías y redirecciones y scripting, seguro te será de mas utilidad que preocuparte de utilizar el shell en modo Emacs o Vi.

Muchas veces, nos empeñamos absurdamente en cambiar nuestro flujo de trabajo, nuestras herramientas, por el brilli brilli, y no le sacamos partido ni a una ni a otra. Así, que primero, aprendamos lo que tenemos entre manos y ya veremos.

Editando con el editor

Si estás muy acostumbrado al uso de Vi, Vim o Neovim, y realmente te resulta productivo editar con cualquiera de estos editores, tienes una opción interesante en Bash, que es la de editar tus comandos con ellos. Esto es tan sencillo como configurar la variable export EDITOR=nvim y cuando necesites editar un comando utiliza el atajo de teclado Ctrl+x Ctrl+e. En ese caso te abrirá Neovim con el comando dentro, edita lo que tengas que editar y sal, Bash ejecutará el comando editado. Si, por el contrario, no quieres modificar el comando y ejecutarlo simplemente sal con :cq y Bash cancelará la solicitud.

Conclusión

Yo por el momento, y visto lo cómodo que me encuentro con Fish, las posibilidades de edición de la línea de comandos, y mi uso de Neovim, voy a continuar una temporada. Así que por el momento, abandono Emacs por Vi

Deja una respuesta

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