Emacs es una herramienta maravillosa y con los paquetes de terceros adecuados puede crear su propio entorno dentro de ella. Las funciones como la generación de ventanas y la emulación de terminal son solo algunas de las partes de Emacs que están ocultas para el usuario ocasional. Este artículo tiene como objetivo arrojar luz sobre algunos de ellos para permitirle aprovechar al máximo su instalación de Emacs.
1. Generación de una nueva ventana
Una de las funciones más útiles de Emacs es la posibilidad de dividir una ventana. Usando Ctrl + x, 2 o Ctrl + x, 3, puede duplicar fácilmente su búfer actual, ya sea horizontal o verticalmente. Esto puede ser especialmente útil si está trabajando en diferentes partes del mismo archivo.
Sabiendo eso, también puede usar este paradigma Ctrl + x para dividir una ventana para un nuevo archivo. De forma predeterminada, los comandos normales de Emacs toman el control de la ventana en la que se encuentra actualmente. Por ejemplo, si presiona Ctrl + x, f y abre un archivo, ese archivo ocupará toda la pantalla.
Sin embargo, al presionar Ctrl + x, 4 seguido de f. Puede indicarle a Emacs que abra ese archivo en un búfer separado. Esto puede ser increíblemente útil si desea verificar un archivo nuevo pero también desea conservar el búfer en el que está trabajando actualmente.
Además, también puede usar esto para cambiar a un búfer actualmente abierto en su sesión de Emacs. Para hacerlo, puede presionar Ctrl + x, 4 y luego b para indicarle a Emacs que abra un búfer de comandos. Esto, a su vez, enumera todos los búfer abiertos actualmente en su sesión.
2. Emuladores de terminales
Por defecto, Emacs viene con dos shells integrados. El primero es un intérprete de comandos nativo escrito en Emacs Lisp llamado “eshell”. Es un shell de solo texto que puede usar para ejecutar comandos UNIX directamente desde Emacs.
Al ser solo texto, también puede modificar cualquier salida de comando en eshell de manera similar a cualquier búfer de texto de Emacs. Esto puede ser útil si está en una sesión de depuración y desea tomar notas entre los errores de compilación.
Debido a la naturaleza de eshell, no puede ejecutar ningún programa complejo de Terminal UI (TUI). Para eso, Emacs también se envía con el término, un Terminal VT100 emulador
Similar a una terminal Linux normal, term emula todas las funciones de un VT100, incluidas sus secuencias de escape. Esto significa que puede ejecutar cualquier aplicación TUI en Emacs. Por ejemplo, actualmente estoy ejecutando vim dentro de Emacs hasta el término.
Con eso, puede ejecutar eshell y term presionando Alt + x. Esto abrirá el búfer de comandos de Emacs. Desde allí, puede escribir eshell
para cargar el terminal de texto o puede escribir term
para cargar el emulador VT100.
Una cosa importante a tener en cuenta es que el término también tiene un modo limitado de «solo texto» al que puede acceder presionando Control + c, j.
Esto cambiará la sesión del término actual a «modo de línea», donde puede copiar y pegar fácilmente comandos hacia y desde el símbolo del sistema. Desde allí, puede volver a un modo de terminal normal presionando Ctrl + c, k.
3. Acceso a archivos remotos en Emacs
Otro brillante programa integrado en Emacs es el Acceso transparente a archivos remotos, protocolo múltiple (VAGABUNDO). Este es un programa simple que le permite acceder sin problemas a cualquier archivo a través de cualquier protocolo dentro de Emacs.
Funciona mediante el uso de programas auxiliares como ssh, rlogin y su para conectar al usuario a una computadora remota. A partir de ahí, TRAMP monta los archivos de la computadora remota en la máquina local del usuario. Eso, a su vez, hace que esos archivos parezcan locales.
Sabiendo eso, puede usar TRAMP presionando Ctrl + x, f y Ctrl + Retroceso para borrar el aviso del archivo. A partir de ahí, debe escribir un formato de ruta específico para decirle a Emacs que use TRAMP:
/protocol:address:/path/to/your/file
Por ejemplo, escribí la siguiente ruta TRAMP para conectarme a mi servidor de archivos a través de SSH:
/sshx:myfileserver.net:/home/ramces/documents/myfile.txt
También puede usar TRAMP para editar archivos privilegiados dentro de Emacs. Esto es muy útil si necesita editar rápidamente los archivos del sistema y no desea abrir un editor privilegiado. Hacerlo de esta manera también reduce el riesgo de problemas de seguridad ya que TRAMP crea un espacio aislado para el archivo privilegiado.
Para acceder a un archivo privilegiado a través de TRAMP, debe usar su
como su protocolo:
En este ejemplo, estaba editando mi archivo de configuración de Yggdrasil a través de TRAMP. Dado que solo accedí al archivo localmente, no necesitaba proporcionar una dirección para su
.
Una vez que presioné Enter, TRAMP me pidió mi contraseña de usuario. Después de eso, el archivo se cargó en un búfer de Emacs como si fuera solo un archivo sin privilegios.
4. Hacer una búsqueda aproximada en Emacs
El Emacs por defecto buscando función es relativamente torpe. Puede presionar Ctrl + S para buscar hacia adelante y Ctrl + R para buscar hacia atrás. Sin embargo, esta forma de búsqueda se limita estrictamente a hacer coincidir una cadena específica.
Esto significa que todo lo que escriba en el cuadro de búsqueda coincidirá exactamente, incluidos los espacios. En la mayoría de los casos, esto no es un problema, ya que la mayoría de las búsquedas de texto solo consisten en palabras sueltas y frases cortas.
A pesar de eso, puede haber instancias en las que desee que Emacs realice una búsqueda aproximada. Este es un tipo de búsqueda de texto que solo coincide con pequeñas partes de varias cadenas.
Por ejemplo, al usar la búsqueda predeterminada de Emacs, no es posible buscar la frase «hola mundo» simplemente proporcionando «he ld» en el cuadro de búsqueda.
Para que esto sea posible, deberá agregar el siguiente código Lisp a su archivo init.el:
(setq search-whitespace-regexp ".*") (setq isearch-lax-whitespace t) (setq isearch-regexp-lax-whitespace nil)
- La primera función,
search-whitespace-regexp
reemplaza el carácter de espacio en blanco por cualquier carácter (.*) cuando se utiliza la búsqueda de texto. - La segunda función,
isearch-lax-whitespace
habilita varias coincidencias de espacios en blanco al buscar un solo espacio en blanco. Usar esto junto con la primera función le permite realizar una búsqueda aproximada. - Por último, la tercera función,
isearch-regexp-lax-whitespace
se asegura de que solo necesitaría usar un solo carácter de espacio en blanco para crear una búsqueda aproximada.
Sabiendo eso, ahora puede volver a cargar su cliente Emacs y probar si la búsqueda difusa funciona. En mi caso, pude buscar la frase “hola mundo” simplemente escribiendo “he ld”.
5. Edición de su búfer Dired
Dirigido es el administrador de archivos predeterminado para Emacs. En esencia, le permite revisar fácilmente el sistema de archivos de su computadora y abrir cualquier archivo directamente en un búfer de Emacs. Puede acceder fácilmente a Dired presionando Ctrl + x, d o Ctrl + x, f.
Sin embargo, uno de los principales problemas con Dired es que es complicado modificar cualquier archivo en su búfer. Por ejemplo, si desea cambiar el nombre de un archivo dentro de Dired, debe hacer dos cosas:
- Primero, debe marcar el archivo que desea editar seleccionándolo y presionando M.
- A partir de ahí, debe presionar Shift + R para alternar un cambio de nombre y proporcionar un nuevo nombre para su archivo.
Si bien cambiar el nombre de un archivo de esta manera es suficiente para el uso básico, hacer esto para modificar varios archivos puede ser un desafío.
Para lidiar con eso, Emacs también viene con la capacidad de editar el búfer de Dired directamente como texto. Esto le permitirá no solo cambiar el nombre de varios archivos, sino también modificar sus bits de permiso.
Para hacer esto, puede presionar Ctrl + x, Ctrl + q. Esto habilitará el modo «Editable Dired». Desde aquí, ahora puede editar el búfer Dired y, una vez que lo guarde, esos cambios se aplicarán a sus archivos.
Por ejemplo, si desea cambiar el nombre de varios archivos, simplemente puede escribir sobre los nombres de los archivos actuales y escribir otros nuevos. Una vez hecho esto, simplemente presione Ctrl + C, Ctrl + C para guardar los cambios y se cambiará el nombre de esos archivos.
Cambio de permisos de archivos usando Dired
Como se discutió anteriormente, otra cosa que puede hacer en Editable Dired es actualizar la configuración de permisos de los archivos. Para hacerlo, deberá agregar la siguiente línea a su archivo init.el:
(setq wdired-allow-to-change-permissions t)
Una vez hecho esto, ahora puede editar los bits de permiso de los archivos directamente desde Editable Dired. Por ejemplo, considere el siguiente archivo:
-rw-r--r-- 1 ramces ramces 8316 Mar 11 10:53 test.txt
La primera columna de texto indica que este archivo tiene permisos de lectura y escritura para mí (rw-). Además, solo tiene permisos de lectura para cualquier otra persona (r–r–).
Para cambiar esto, seleccioné sobre esta columna de texto y presioné W en los otros bits para permitir que otras personas editen este archivo:
-rw-rw-rw- 1 ramces ramces 8316 Mar 11 10:53 test.txt
Por otro lado, para deshacer eso, puede presionar – a cualquier bit de permiso y borrará el permiso para ese campo:
-r--r--r-- 1 ramces ramces 8316 Mar 11 10:53 test.txt
¡Eso es todo, ahora conoce 5 funciones ocultas en Emacs predeterminado que puede usar para mejorar su experiencia de edición!
Preguntas frecuentes
1. ¿Es posible crear una nueva ventana para otros paquetes de Emacs?
Tristemente no. El comando Ctrl + x, 4 solo funciona para abrir archivos nuevos similares a Ctrl + x, f y para abrir búferes similares a Ctrl + x, b.
Una forma de evitar esta limitación es abrir el paquete normalmente usando Alt + x. Desde allí, puede recuperar su búfer anterior presionando Ctrl + x, 4, b.
2. ¿Puedo usar un shell diferente para el emulador VT100?
¡Sí! Cuando ejecuta el comando de término usando Alt + x, Emacs le pedirá el shell que desea usar. De forma predeterminada, agregará el shell predeterminado para su sistema. Esto significa que si su shell predeterminado es bash, Emacs proporcionará «/bin/bash» en este indicador.
Para usar un shell diferente, debe reemplazar este valor con la ruta del shell que desea usar. Por ejemplo, si desea usar ksh en el término, debe escribir /bin/ksh
cuando term le solicite el terminal que desea utilizar.
3. ¿Puedo deshacer mis cambios en el búfer de Dired?
Si y no. Puede deshacer todos los cambios que haya realizado en Editable Dired presionando Ctrl + c, ESC. Sin embargo, esto solo funcionará si aún no ha guardado los cambios en el disco.
Una vez que presione Ctrl + C, Ctrl + C, Emacs escribirá todos los cambios que haya realizado. Para entonces, la única forma de deshacerlos es editar manualmente los archivos nuevamente.
Credito de imagen: Unsplash