Removendo os últimos n caracteres de cada linha em um buffer do emacs

5

Usando os recursos integrados do Emacs, há uma boa maneira de remover os últimos n caracteres (de n > = 1) de todas as linhas de um buffer do Emacs? Eu suponho que é possível definir uma macro de teclado para fazer isso, mas não é isso que eu tenho em mente aqui.

Existe uma solução elegante no Stack Overflow para a questão correspondente de como adicionar caracteres a cada linha no emacs, ou seja, Acrescentando caracteres ao final de cada linha no Emacs , mas não consegui encontrar uma resposta para essa pergunta.

NOTAS:

  1. Como o XEmacs está quase todo morto (RIP), a questão pode ser considerada como sendo exclusivamente sobre o GNU Emacs.

  2. Existem soluções fáceis para isso usando editores de fluxo Unix e afins.
    Operar em um buffer Emacs é mais flexível, no entanto.

  3. Eu poderia fazer isso à mão, mas fiz uma espécie de Ano Novo
    resolução para fazer melhor uso das capacidades do Emacs. Afinal, eu fui usando apenas 20 anos e não sabe quase nada sobre isso.

por Faheem Mitha 08.01.2014 / 21:21

1 resposta

4

Você pode usar a mesma abordagem de replace-regex para remover como o caso de acréscimo, apenas prefixar o metacaractere de regex de final de linha com um metacaractere de qualquer caractere:

M-< M-x replace-regex RET .$ RET RET

Para substituir vários carateres, pode, de forma pedestre, começar a pré-adicionar .? (um opcional em qualquer caracter) ao seu regex:

M-< M-x replace-regex RET .?.$ RET RET

ou, mais elegantemente, você pode usar na notação interval-style para indicar até n any-chars antes do fim-de-linha, no exemplo a seguir, n = 2:

M-< M-x replace-regex RET \{,2\}$ RET RET

Há mais sobre a sintaxe do regex em RegularExpression no EmacsWiki

    
por 08.01.2014 / 21:29

Tags