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?


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).

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.