Transponha retângulos do emacs

3

Suponha que eu tenha este texto:

RUN_
RUN_
RUN_
RUN_
RUN_

e quero esse aqui:

RUN_A
RUN_B
RUN_C
RUN_D
RUN_E

Gostaria de poder escrever ABCDE e de alguma forma "transpor" e mate-o como um retângulo.

Isso pode ser feito sem muito hacking lisp?

    
por Alfred M. 11.05.2012 / 10:22

2 respostas

2
(defun insert-column (chars)
  (interactive "sChars to enter: ")
  (insert-rectangle (mapcar 'string (string-to-list chars))))
    
por 11.05.2012 / 11:01
0

Marque o texto relevante. Em seguida, pressione:

M-x espaço para apagar em branco

Coloque o cursor no começo. Digite o seguinte (com devoluções nos locais relevantes)

M-x map-query-substituir-regexp

$

A B C D E

Este procedimento limpa primeiro o espaço em branco à direita por linha e, em seguida, por fim de linha insere A, B, etc. um por um nesses finais de linha. Outros padrões de substituição, é claro, são possíveis. Não é estritamente um retângulo transposto, mas bastante versátil e é tipicamente mais próximo do que se deseja, pois as substituições não estão necessariamente na mesma coluna, mas sim determinadas pelo padrão.

    
por 26.02.2015 / 01:48