Como usar as abrevs

7

Acho que usar abrevs no Emacs é confuso. Apesar de ler o manual e o EmacsWiki , continuo tendo problemas para usá-los.

Objetivo :

Defina uma abreviação rápida e descartável para uma única sessão do Emacs.

Exemplo:

Ao usar Python e Numpy, às vezes as saídas são encurtadas com reticências:

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

Para exibir a matriz na íntegra, você precisa emitir esta boca cheia de uma declaração:

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

Parece uma situação perfeita para uma abreviação!

Aqui está o que eu faço:

  1. Digite fppara "impressão completa"
  2. Com ponto imediatamente após pem fp, issue C-x a g( add-global-abbrev)
  3. No prompt do minibuffer Global abbrev for "fp":, coloque with np.printoptions(threshold=np.inf): print()e pressione<RET>
  4. O minibuffer sai, retornando-me ao meu buffer original com point after pinfp
  5. Edição C-x a e( expand-abbrev)

Nada acontece.

Se eu verificar list-abbrevs, existe:

(global-abbrev-table)

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

Meu entendimento é que não preciso abbrev-modehabilitar, pois isso é usado apenas para expansão automática. Aliás, ativar abbrev-modeainda não se expande fp.

Estou perplexo pelo que estou fazendo de errado e gostaria de receber alguns conselhos!

Lorem Ipsum
fonte
2
Desde que você leia o doc Emacs sobre isso, mas interpretou o comportamento para trás, por favor considere dizendo Emacs sobre o problema e talvez sugerir algum formulação diferente: M-x report-emacs-bug. É provável que você não seja a única pessoa que conseguiu esse retrocesso. Talvez o documento deva incluir um exemplo?
Tirou

Respostas:

7

Você definiu sua abreviação para trás - "com np.printoptions (threshold = np.inf): print ()" será expandido para "fp" com o que você fez!

Para definir uma abreviação com várias palavras, faça o seguinte:

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

A respeito

  1. Coloque o ponto imediatamente após p em fp.
  2. Problema C-x a i g(inverse-add-global-abrev).
  3. Digite with np.printoptions(threshold=np.inf): print()e pressione RET.
  4. C-x a e

BTW eu sempre abbrev-mode ligado o tempo todo e quase sempre ajuda e quase nunca fica no meu caminho.

Marco Wahl
fonte