Como selecionar coluna e editar no GNU Emacs?

14

Estou usando o ViM, o TextMate e o GNU Emacs há anos.

Por exemplo, aqui está o texto que eu quero editar

foo
foo
foo

E aqui está o resultado do texto que eu quero ter

bar foo
bar foo
bar foo

Quando estou no Vim, posso fazer "Ctrl v" na primeira linha e na primeira coluna, depois pressionar "2 j", depois pressionar "i" e digitar "bar".

Quando estou no Textmate, posso pressionar "Apple Command Option" ao selecionar para baixo (pelo meu mouse), depois digite "bar", pronto.

Mas quando estou no GNU Emacs 23.1, não sei como fazer isso. : ((

Eu pesquisei o EmacsWiki e pesquisei, mas não obtive a solução. Por favor me guie se você souber minha solução. Ficaria muito grato por isso.

    
por Arie 01.12.2009 / 12:16

5 respostas

15

Duas opções vêm à mente. O primeiro é retângulos (como mencionado em outra resposta). As instruções explícitas para isso são:

  1. ir para a primeira linha, primeira coluna
  2. C-SPC
  3. Ir para a última linha (primeira coluna)
  4. C-x r t bar RET SPC

Outra opção, que fornece comandos de edição de retângulo / coluna muito interessantes, é o modo CUA . Aqui está uma postagem do blog (divulgação: meu blog) que descreve como usá-lo. Para ver o poder do modo CUA, vale a pena assistir este vídeo de três minutos .

Eu integro o modo CUA com o seguinte (porque eu prefiro não ter o modo de marca transiente):

(setq cua-enable-cua-keys nil)
(setq cua-highlight-region-shift-only t) ;; no transient mark mode
(setq cua-toggle-set-mark nil) ;; original set-mark behavior, i.e. no transient-mark-mode
(cua-mode)
    
por 01.12.2009 / 18:59
8

No Emacs-24.4, o suporte básico para retângulos foi melhorado um pouco, então ao invés de usar C-SPC seguido por C-x r t , você pode fazer:

C-x SPC
down down
C-t bar RET

Uma das coisas boas sobre isso em comparação com o método C-SPC é que você obterá um feedback visual sobre o retângulo que está selecionando. É claro que o método cua-mode também funciona (e funciona de maneira semelhante).

    
por 22.01.2015 / 18:25
2

No emacs, esses tipos de colunas são chamados de 'retângulos'. Portanto, esta é a página de documentação relevante.

Todos esses comandos exigem que a região contenha o retângulo em que você está operando. Portanto, você precisa definir a marca no caractere superior esquerdo no retângulo e estender a região para o caractere inferior direito no retângulo. O comando que você está procurando é M-x string-insert-rectangle , que então solicita que a string seja inserida.

    
por 01.12.2009 / 13:52
1

Resposta mais curta: Ative o modo de retângulo CUA através de C-RET .

Então, para o seu caso, seria

  1. Vá para a primeira linha, primeira coluna e pressione C-RET para entrar no modo CUA
  2. Ir para a última linha, primeira coluna e simplesmente digite bar SPC
  3. Saia do modo CUA através de ESC ou C-G

Veja a resposta de @Trey para uma solução mais elaborada e links para CUA.

    
por 21.01.2015 / 22:55
0

Você pode usar o replace-regexp para isso:

  1. definir marca para a última linha - > C SPC e vá para a última linha
  2. digite M-x replace-regexp RET no minibuffer (eu tenho uma ligação de chave para este M-r)
  3. Dê ^ RET
  4. digite bar e clique em RET

Isso adicionará uma barra ao início da linha.

    
por 28.04.2015 / 10:58

Tags