Cómo usar abreviaturas

7

El uso de abreviaturas en Emacs es confuso. A pesar de leer el manual y el EmacsWiki , sigo teniendo problemas para usarlos.

Objetivo :

Defina una abreviatura rápida y desechable para una sola sesión de Emacs.

Ejemplo:

Cuando se usa Python y Numpy, las salidas a veces se acortan con puntos suspensivos:

array(['1007.65', '1007.63', '1007.66', ..., '993.40', '993.40', '993.57'],
      dtype=object)

Para mostrar la matriz en su totalidad, debe emitir este bocado de una declaración:

with np.printoptions(threshold=np.inf): print(my_arr['field_name'])

¡Esto parece una situación perfecta para un abreviatura!

Esto es lo que hago:

  1. Escriba fppara "impresión completa"
  2. Con punto inmediatamente después pen fp, número C-x a g( add-global-abbrev)
  3. En el indicador de minibúfer para Global abbrev for "fp":, poner with np.printoptions(threshold=np.inf): print()y presionar<RET>
  4. El minibúfer sale y me devuelve a mi búfer original con un punto después penfp
  5. Issue C-x a e( expand-abbrev)

No pasa nada.

Si verifico list-abbrevs, ahí está:

(global-abbrev-table)

"with np.printoptions(threshold=np.inf): print()" 0 "fp"

Entiendo que no necesito abbrev-modehabilitarlo, ya que solo se usa para la expansión automática. Por cierto, la habilitación abbrev-modeaún no se expande fp.

¡Estoy perdido por lo que estoy haciendo mal y agradecería algunos consejos!

Lorem Ipsum
fuente
2
Dado que se lee el documento Emacs sobre esto, pero interpretado el comportamiento hacia atrás, por favor considere contar Emacs sobre el problema y tal vez sugerir una redacción diferente: M-x report-emacs-bug. Es probable que no seas la única persona que haya hecho esto al revés. ¿Quizás el documento debería incluir un ejemplo?
Drew

Respuestas:

7

Definió su abreviatura hacia atrás: "con np.printoptions (umbral = np.inf): ¡print ()" se expandirá a "fp" con lo que ha hecho!

Para definir una abreviatura de varias palabras, debe hacer:

  1. M-x define-global-abbrev
  2. fp
  3. with np.printoptions(threshold=np.inf): print()
Tyler
fuente
2

Qué pasa

  1. Poner punto inmediatamente después de p en fp.
  2. Problema C-x a i g(inverse-add-global-abbrev).
  3. Ingrese with np.printoptions(threshold=np.inf): print()y presione RET.
  4. C-x a e

Por cierto, tengo el modo abreviado activado todo el tiempo y casi siempre ayuda y casi nunca se interpone en mi camino.

Marco Wahl
fuente