org-mode – ¿Algún consejo? – Luchando con la reutilización de texto en el búfer de emacs

Pregunta:

Básicamente soy un usuario de emacs / orgmode de nivel 0, y trato de acostumbrarme a Emacs / Orgmode. Haciendo esto como por quinta vez, como la mayoría de los principiantes de Emacs, obviamente. Tengo la sensación de que me gustará y seré feliz con el mundo de Emacs, pero bueno, se necesita mucha paciencia. Entonces estoy tratando de hacer las cosas poco a poco.

Así que estoy tratando de hacer algo que aparentemente debería ser bastante factible, pero no puedo entender cómo hacerlo funcionar. La idea es reutilizar texto predefinido dentro de un búfer.

Creo que lo que quiero es definir un tipo de "variables de texto" o "fragmentos" y reutilizar eso en mi texto más adelante.

Digamos que estoy escribiendo algunas especificaciones para mi computadora portátil. Me gustaría algo como definir un término en el búfer (no prestes atención a la sintaxis, es solo mi interpretación), digamos "Thinkpad T470p, negro, con tarjeta gráfica dedicada, XYZ".

Entonces definiría este término al comienzo de mi búfer.

El término, presumiblemente, tendría una etiqueta / nombre (no estoy seguro de si es el término correcto) y algún valor. Digamos que el valor es el anterior y la etiqueta es "MyThinkPad".

Luego, al escribir texto, me gustaría comenzar a escribir "MyThinkPad" y eso insertaría automáticamente el texto previamente predefinido "Thinkpad T470p, negro, con tarjeta gráfica dedicada, XYZ" en la posición del cursor.

Y lo que es más importante: si cambio el valor de esta "variable" en el búfer, debería actualizarse automáticamente en todo el búfer.

No estoy seguro de cuál es la dirección correcta para mirar. Tengo la sensación de que esto tiene que ver con algunos de estos "# + NAME" o "# + LABEL", o citas, o variables locales, o algo por el estilo.

Después de leer recursos en línea y probar varias ideas, estoy estancado y recurro a la ayuda de la comunidad. Realmente esperando sus sugerencias. ¡Gracias por adelantado!

Respuesta:

Tl; dr Use Yasnippet

Hola, desde el caso de uso que describe, Yasnippet podría brindarle una solución. En la página de EmacsWiki de este proyecto se explica que:

[Yasnippet] le permite escribir una abreviatura y expandirla automáticamente en plantillas de funciones.

En su caso, la plantilla de la función sería simplemente una cadena constante.


Ejemplo detallado

No pude encontrar un ejemplo simple sobre cómo hacer que yasnippet funcione en mi máquina, así que decidí agregar un poco más de detalle a esta respuesta.

  1. Descargué el paquete yasnippet en ~/.emacs.d/lisp/yasnippet y puse las siguientes líneas en mi ~/.emacs.d/init.el :

     (require 'yasnippet) (setq yas-snippet-dirs '( "~/.emacs.d/snippets" )) (yas-global-mode 1)

    Esto le dice a yasnippet que busque en la carpeta ~/.emacs.d/snippets sus fragmentos personales.

  2. Dentro del directorio ~/.emacs.d/snippets , he creado otro directorio llamado org-mode . El punto importante a tener en cuenta es que yasnippet aparentemente espera que el nombre de la carpeta sea igual al nombre del modo (menor) que desea usar más adelante.

  3. En el ~/.emacs.d/snippets/org-mode , cree un archivo de test con el siguiente contenido:

     # name: thinkpad # key: thinkpad # -- "Thinkpad T470p, black, with dedicated graphics card, XYZ"

Ahora, siempre que esté editando un archivo con orgmode, simplemente escriba thinkpad + <TAB> y automáticamente expandirá la cadena de thinkpad a "Thinkpad T470p, black, with dedicated graphics card, XYZ" como desee. Obviamente, luego puede cambiar la cadena a otra cosa si lo desea.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım