Cuando los programadores hablan de editores de Código o IDEs (Integrated development environment), muchos piensan en software con interfaces graficas de usuario (GUI) muy producidas, como los que nos ofrece Visual Studio Code, o los IDEs de Jetbrains (Intellij IDEA, Pycharm, WebStorm, CLion), al ser estos son muy usados en el sector profesional y ser bastante fáciles de empezar a usar.
Pero muy aparte de estos, tambien hay otro tipo de Editores o IDEs que tienen una especie de nicho y que al día de hoy hay muchos programadores que los usan, y seguiran habiendo otros que los seguiran usando.
Estoy hablando de los editores de código que funcionan desde Terminal, estos son tipicamente usados por programadores que quieren ganar productividad, o les gusta los software ligeros y rapidos; o tambien son usados por administradores de sistemas, que tipicamente tienen se conectan a un servidor remoto Linux.
Y de hecho esto es algo muy común en Linux, porque como en este sistema la terminal es muy importante para admnsitrar todo sistema, tambien es obvio que tengamos editores de terminal bastante producidos. Aunque ademas de soportar Linux, muchos de estos tambien pueden ser ejecutados en Windows y en Mac, lo que solo incrementa su adopcion.
Asi que en este video voy a mencionar una lista de editores de código de terminal, resaltando los más utiles y que puedes llegar a usar en tu trabajo del día a día como programador.
Si tienes prisa la lista completa es esta:
- Vim
- Neovim
- GNU Emacs
- Helix
- Micro
- nano
- ne
- mcedit
- tilde
empecemos con el más popular Vim.
Vim
Si has estado usando sistemas Linux durante bastante tiempo, es muy probable que ya hayas oido hablar de Vim. Vim es un editor de texto ampliamente configurable, multiplataforma y altamente eficiente (consume muy pocos recurso del computador).
Puede que no sea adecuado para iniciantes que estan empezando a programar, pero es algo con lo que muchos aspirantes a administradores de sistemas Linux deberían sentirse cómodos en algun momento. Ademas que probablemente lo encontrarás preinstalado muchas veces en distribuciones Linux, sobretodo si hablamos de servidores de la nube (Cloud computing).
Vim puede ser bastante complicado para los usuarios primerizos. Siendo bastante comun, casos en donde algunos que abren el editor no sepan como escribir algo, o ni siquiera saber cerrarlo. Y es que todo en vim funciona con combinaciones de tecla sin usar para nada el mouse, asi que si va a usar Vim, debe estar decidido a subir una curva de aprendizaje muy empinada.
Pero después de haber pasado por todo eso, revisado su documentación oficial y practicado los comandos/operaciones basicas, encontrarás que vale la pena todo el tiempo invertido. Puedes usarlo para la edición básica de texto o aprovechar su soporte para cientos de lenguajes de programación, temas, extensiones y formatos de archivo. Ademas hay una basta comunidad que ya ha creado modulos para practicamente todos los entornos de desarrollo de software y lenguajes, y si en caso necesitaras algo más personalizado tambien puedes crear tus propias extensiones usando su propio lenguaje de programacion llamado VimScript, el cual es un lenguaje interpretado que tambien puede funcionar en conjunto con Python, Ruby, y muchos otros.
Ahora, si aún no tienes instalado Vim en tu sistema, puede escribir el siguiente comando (en sistemas basados en Debian) para instalarlo:
sudo apt install vim
Aunque tambien esta disponible como un instalador para Windows y Mac. Incluso tiene una version grafica llamado GVim, que permite usarlo desde una ventana.
NeoVim
Al ser Vim un editor de terminal muy popular es normal que muchos desarrolladores intenten mejorarlo a tal punto, que inluso llegue a crear un proyecto alternativo basado en el mismo Vim. Este es el caso de Neovim.
Neovim es una fork de Vim, en el que su desarrollo se ha enfocado más en permitir ser extendido y facilitar su usabilidad. Y al estar basado en Vim, significa que los desarrolladores no tienen que aprender nada nuevo al usarlo, lo que quiere decir que la diferencia practica de ambos es que Neovim ofrece caractersiticas más modernas.
- Posee intefaces graficas más modernas que Vim
- Posee un mejor diseño de proyecto, lo que permtiendo a sus desarrolladres añadir más caractersiticas sin que afecte los cmabios del resto
- soporte del lenguaje de programacion Lua, lo que permite crear plugins con mayor facilidad,
Aunque todo esto sindo compatible aun con Vim, lo que quiere decir que puedes seguir usando todas sus extensiones, temas, y configurandos de Vim, ademas que que si ya estas familiarizado con el funcionamiento de Vim, es posible que no notes la notable diferencia entre los dos en cuanto a su uso.
Neovim puede ser instalado en cualquier distribucion Linux, por ejemplo con este comando lo puedes instalar en Ubuntu:
sudo apt install neovim
Y para ejecutarlo puedes usar el comando:
nvim
GNU Emacs
GNU Emacs es sin duda uno de los editores de texto más antiguos y versátiles que existen. Y en caso que no lo supieras, fue creado por el fundador del Proyecto GNU, Richard Stallman.
Emacs practicamente es un editor de terminal multiplataforma, aunque tambien ofrece una interfaz gráfica de usuario (GUI). Y entre sus caractersiticas más relevantes es que es extensible, pero realmente extensible, permitiendo hacer de todo con el, pudiendo transformarse desde un simple editor de texto a un software que puedas usar para tener calendarios, lector de noticias, cliente de correos, reproductor de musica, e incluso jugar dentro de emacs.
Es por esto mismo que algunos usuarios lleguen consideran a Emacs, a modo de exageracion, como una especie de sistema operativo operativo.
Y Emacs Al igual que Vim, también viene con una curva de aprendizaje empinada. Pero una vez que lo dominas, puedes aprovechar sus caractersiticas. Emacs puede manejar prácticamente cualquier tipo de archivo de texto. La interfaz se puede personalizar para adaptarse a su flujo de trabajo. También es compatible con la grabación de macros y los accesos directos, ademas posee una gran colección de módulos creados por la comunidad o puedes crear los tuyos propios usando Emacs Lisp o Elisp, el cual es un dialecto del lenguaje de programacion funcional Lisp.
Emacs es multiplataforma, siendo posible instalarlo en Linux, Mac, o Windows. Por ejemplo con este comando puedes instalarlo en Ubuntu-
sudo apt install emacs
Por defecto emacs cuando lanza una ventana (GUI), aunque si necesitas que funcione especificamente en tu terminal, puedes usar este comando:
emacs -nw
Básicamente, este comando indica que no se debe incluir ninguna ventana para iniciar el programa, sino la propia terminal.
Nano
Hasta ahora si he mencionado Vim, Neovim y Emacs, es porque estos son los editores de terminal más populares, pero tambien son bastante complicados de empezar a usar para muchos, asi que si solo necesitaramos editar archivos de vez en cuando, esta tarea podria llegar a ser muy complicada de realizar si solo tuvieramos estos editores. Por suerte esto no es asi, por lo que si quieres un editor que no ofresca tantas funcionalidades y sea muy sencillo de usar. la mejor opcion es nano.
Nano es adecuado para que los principiantes se acostumbren rápidamente a editar desde terminal. Asi que si simplemente desea crear y editar un archivo de texto, sin tener que pasar horas aprendiendo combinaciones de tecla, este es la solucion rapida.
De hecho Los accesos directos disponibles en Nano se muestran en la parte inferior de la interfaz de usuario, por lo que ni siquiera necesitas aprenderlos.
El editor pesa muy poco y es perfectamente adecuado para editar sistemas y archivos de configuración, justo por esto es que los administradores de sistemas lo usan mucho, ya que para aquellos que estos no necesitan de funciones avanzadas de un editor, como autocompletado, colores, y soporte a lenguaje, Nano es una solución más práctica.
Ahora en cuanto a su instalación, es muy probable que Nano ya venga preinstalado en tu distribucion Linux, aunque si no está allí, simplemente puede visitar la página de descarga oficial para obtener los binarios para la distribución que desea.
Micro
Si usando Nano tenemos un editor de codigo muy facil de usar pero con poca personalizacion, y con vim tenemos editores más complicados pero altamente personalizables. la pregunta es ¿Tendremos un editor que ofreza personalizacion como vim o emacs, pero que sea facil como nano?
La respuesta es si, y este seria Micro.
Micro es un editor de terminal Open Source, que es altamente personalizable, tanto en temas como con plugins, posee soporte para 75 lenguajes de programacion, por defecto, posee soporte a multiples cursores, puedes crear tus propios atajos, soporta tambien soporta el uso del mouse (a diferencia de vim), e incluso permite cargar un shell desde el mismo editor.
De hecho, Micro tambien implementa los accesos directos universales de copiar/pegar/guardar (CTRL + C/V/S), lo que es raro de ver en editores de terminales de Linux.
Y Aunque no tiene muchas funciones como Vim u otros editores de texto maduros, si posee mucho más que nano, asi que estaria en el medio.
Micro está disponible en los repositorios de todas las principales distribuciones. En Ubuntu, puedes instalarlo con:
sudo apt install micro
Para otros sistemas Linux, puede consultar su página de GitHub.
Helix
En estos ultimos años se ha popularizado mucho la creacion de programas hechos en Rust que reemplacen a programas creados en C o C++, o que sean bastante viejos. Asi que Vim no iba a pasar desapercibido, y es por esto que tenemos a Helix.
Helix es un editor de terminal desarrollado en Rust, que consume muy pocos recursos, y usa un Tree-Sitter, una analizador sintactico creador por Github, para ofrecer resaltado de codigo, el cual hace que este editor sea muy rapido. Y a diferencia de vim o emacs, que necesitan de plugins, este ya viene con support includo a multiples lenguajes de programacion, provee automcpletador basado en el contexto, posee soporte a multiples cursores, y ya viene con temas incluidos. Es decir en este editor no es necesario instalar nada, de hecho aun no se puede desarrollar plugins porque aunesta en desarrolo
Y Helix al igual que Vim solo funciona con atajos de teclado, posee los Modos de Vim (incluso posee más modos que vim), y es altamente configurable, ofreciendose como una alternativa directa a lo que seria Neovim, de hecho su documentacion menciona que si neovim es moderno, Helix es un editor de codigo Post-Moderno
Aunque este editor al ser batante, asi que no tiene una comunidad muy grande y al no permitir integrar plgins aun, no se puede trabajar con cualquier lenguaje de programacion, asi que se tiene que usar solo las caractersiticas que ofrece de momento.
Otros editores
Ahora muy aparte de estos editores de codigo de terminal, tambien hay otras opciones que podemos encontrar que tienen menos caractersiticas, y no son tan populares en comparacion, pero aun asi pueden ser muy utiles y practicos. Entre estos podemos encontrar a:
- ne - The Nice Editor. que ofrece una interfaz desde terminal con botones al estilo de las ventanas tipicas, Puedes instarlo con
sudo apt install ne
- meedit, este otro editor de terminal que se integra con un explorador de archivos de terminal llamado Midnight Commander que puede ser usado como una alternativa a progrmas como ranger por ejemplo
- Tilde, que es un editor que ofrece caractersiticas muy basicas de edicion, similar a mcedit
Conclusión
En fin, Si es un usuario experimentado de Linux, debe haber oído hablar de la mayoría de las opciones mencionadas en esta lista, si no de todas.
Si eres un iniciante o alguien que usa poco la terminal puedes, ir por Nano o Micro, estos son muy sencillos de usar.
Si lo que buscas es productividad como programador, puedes ir por Vim, Neovim o Emacs, todos estos tienen un grado de personalizacion alto, y puedes obtener muchos beneficios del poco consumo de recurso que usan.
O si buscas algo nuevo y distinto a todos estos, Helix parece una solucion prometedora similar a Neovim, pero con caractersiticas más modernas, aunque aun en desarrollo.
Y estas son solo mi recomendaciónes. asi que si tiene un editor terminal favorito o uno que usas mucho, comntalo para que de esa forma otros que esten buscando alternativas u opinion se enteren tambien, nos vemos en un proximo articulo.