Bagaimana cara menimpa kotak yang disalin alih-alih menyisipkannya (yang merupakan perilaku default dari kotak-yank)?

8

Setelah menyalin menggunakan "persegi panjang" C-x r M-w, melakukan C-x r ymenyentak atau menempelkan persegi panjang. Tapi itu memasukkan persegi panjang yang disalin.

Bagaimana saya bisa menempel persegi panjang yang disalin sehingga menimpa teks?

Contoh:

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

Saya menyalin persegi panjang terlampir di antara posisi kursor yang ditunjukkan di atas menggunakan M-x copy-rectangle-as-killatau C-x r M-w.

Sekarang ketika saya menempelkannya di depan karakter hmenggunakan M-x yank-rectangleatau C-x r y, saya ingin hasilnya terlihat seperti

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

dari pada

 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

Bagaimana saya bisa membuat yank-rectanglepenulisan ulang?

Kaushal Modi
sumber
Bekerja untukku. Coba jalankan Emacs dengan flag -Q untuk menggunakan konfigurasi default. Jika itu berhasil maka itu akan menjadi sesuatu dalam konfigurasi Anda.
Colin Bell
Ah! Saya keliru mengajukan pertanyaan sebaliknya. Maksud saya mencari cara untuk C-x r ymenimpa. Saya sedang mengedit pertanyaan saya sekarang.
Kaushal Modi

Jawaban:

8

Gunakan M-x picture-mode. C-c C-y, terikat perintah picture-yank-rectangle, melakukan apa yang Anda inginkan. (Anda dapat menggunakan C-_untuk membatalkan.)

Kunci terkait ini juga tersedia di picture-mode:

  • C-c C-k- Bersihkan persegi panjang dan simpan ( picture-clear-rectangle)
  • C-c C-w- Bersihkan persegi panjang dan simpan dalam register ( picture-clear-rectangle-to-register)
  • C-c C-x- Suka C-c C-y, tetapi menggunakan persegi panjang dalam register ( picture-yank-rectangle-from-register)
  • C-x r r- Salin persegi panjang ke register ( copy-rectangle-to-register)

Gunakan C-c C-cuntuk keluar dari mode gambar.

Anda juga dapat menggunakan perintah mode gambar tanpa menyalakan picture-mode, tetapi dalam kasus itu kunci mereka tidak terikat. Anda tetap harus memuat perpustakaan picture.

Jadi, Anda dapat, misalnya, melakukan ini:

  1. Gunakan C-x r runtuk menyalin persegi panjang ke register.
  2. Letakkan kursor di tempat Anda ingin menarik persegi panjang itu, menggantikan teks yang ada.
  3. M-x picture-yank-rectangle-from-register (yang juga bisa Anda ikat ke kunci).
Drew
sumber
1
Terima kasih! The M-x picture-yank-rectangle-from-registersolusi karya besar bagi saya; Saya hanya perlu untuk dimasukkan ke (require 'picture)dalam saya init.el.
Kaushal Modi
1

Pendekatan lain adalah menggunakan delete-selection-modedan melakukan ini di file init Anda:

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

Tapi itu membuat yank-rectangle selalu mengganti teks pada titik, yang mungkin bukan yang Anda inginkan.

Drew
sumber