Como sobrescrever um retângulo copiado em vez de inseri-lo (qual é o comportamento padrão do retângulo yank)?

8

Depois de copiar um "retângulo" usando C-x r M-w, C-x r ypuxando ou colando o retângulo. Mas isso insere o retângulo copiado.

Como colar o retângulo copiado para substituir o texto?

Exemplo:

 a b c d e f g
 h i j k▮l m n
 o p q r s t u▮

Copiei o retângulo entre as posições do cursor mostradas acima usando M-x copy-rectangle-as-killou C-x r M-w.

Agora, quando colo na frente do caractere, husando M-x yank-rectangleou C-x r y, quero que o resultado pareça

 a b c d e f g
▮l m n k l m n
 s t u r s t u

ao invés de

 a b c d e f g
▮l m n h i j k l m n
 s t u o p q r s t u

Como posso fazer a yank-rectanglesubstituição?

Kaushal Modi
fonte
Funciona para mim. Tente executar o Emacs com o sinalizador -Q para usar a configuração padrão. Se isso funcionar, será algo na sua configuração.
Colin Bell
Ah! Eu fiz a pergunta inversa por engano. Quero encontrar uma maneira de C-x r ysobrescrever. Estou editando minha pergunta agora.
Kaushal Modi

Respostas:

8

Use M-x picture-mode. C-c C-y, vinculado ao comando picture-yank-rectangle, faz o que você deseja. (Você pode usar C-_para desfazer.)

Essas chaves relacionadas também estão disponíveis em picture-mode:

  • C-c C-k- Limpe um retângulo e salve-o ( picture-clear-rectangle)
  • C-c C-w- Limpe um retângulo e salve-o em um registro ( picture-clear-rectangle-to-register)
  • C-c C-x- Como C-c C-y, mas usa o retângulo em um registrador ( picture-yank-rectangle-from-register)
  • C-x r r- Copie um retângulo para um registro ( copy-rectangle-to-register)

Use C-c C-cpara sair do modo de imagem.

Você também pode usar os comandos do modo de imagem sem ativar picture-mode, mas, nesse caso, as teclas não estão ligadas. De qualquer forma, você precisará carregar a biblioteca picture.

Então você pode, por exemplo, fazer o seguinte:

  1. Use C-x r rpara copiar um retângulo para um registro.
  2. Coloque o cursor onde deseja puxar esse retângulo, substituindo o texto existente.
  3. M-x picture-yank-rectangle-from-register (que você também pode vincular a uma chave).
Desenhou
fonte
1
Obrigado! A M-x picture-yank-rectangle-from-registersolução funciona muito bem para mim; Eu simplesmente preciso colocar (require 'picture)no meu init.el.
Kaushal Modi
1

Outra abordagem é usar delete-selection-modee fazer isso no seu arquivo init:

 (put 'yank-rectangle 'delete-selection 'yank)

Mas isso yank-rectangle sempre substitui o texto no momento, o que pode não ser o que você deseja.

Desenhou
fonte