Saat mencari string dengan C-s
, saya ingin dapat menekan beberapa tombol untuk keluar dari mode pencarian tetapi tetap mempertahankan pemilihan yang cocok. Dengan begitu saya bisa langsung mulai mengetik dan mengganti yang paling cocok.
Misalnya, katakan saya memiliki dokumen berikut:
The quick brown fox jumps over the lazy dog.
Jika saya mencari "lazy", emacs akan memilih kata itu seperti itu (tanda kurung siku adalah pilihan, pipa adalah kursor):
The quick brown fox jumps over the [lazy|] dog.
Sekarang, jika saya menekan return, emacs akan mempertahankan posisi kursor saya, tetapi itu akan membatalkan pilihan "malas":
The quick brown fox jumps over the lazy| dog.
Alih-alih ini, saya ingin jalan pintas yang akan keluar dari mode pencarian tetapi mempertahankan pemilihan pertandingan saat ini, seperti di negara bagian kedua di atas.
M-x query-replace
apa yang kamu cari?C-s
dan mengetik apa yang saya pikir saya ingin cari, kemudian ubah kueri w / backspace menjadi nol pada hal yang ingin saya ubah. Lalu saya bermain-main dengan apa yang sebenarnya ingin saya gantikan.M-%
terlalu "formal."query-replace
tidak menyelesaikan ini.Jawaban:
Inilah satu pendekatan:
Ini mengikat kunci yang berbeda (C-return) untuk keluar dari pencarian saat ini dan juga membiarkan pertandingan terakhir dipilih. Ini akan bekerja dengan
isearch-forward-regexp
baik, yang berguna.sumber
bind-key
datangnya?bind-key
berasal dari perpustakaan lain. Saya telah mengubah jawaban untuk menggunakandefine-key
fungsi bawaan.Library Isearch + memungkinkan Anda melakukannya dengan mudah , dan bahkan mengaktifkan / mematikannya dengan cepat.
Opsi non-nil
isearchp-set-region-flag
secara otomatis menetapkan wilayah (pilihan) di sekitar target pencarian terakhir ketika Anda keluar dari pencarian.Perintah
isearchp-toggle-set-region
, terikatM-s M-SPC
selama opsi matikan isearchisearchp-set-region-flag
.Perintah
set-region-around-search-target
secara manual mengatur wilayah di sekitar target pencarian terakhir. (Jadi, bahkan jika opsi tidak diatur, sehingga Anda tidak mendapatkan seleksi otomatis, Anda dapat melakukannya secara manual.)Library Replace + memungkinkan Anda melakukan hal yang sama untuk
query-replace
dll. Ini membuat wilayah sekitar (yaitu, memilih) kejadian penggantian terakhir. Ini menggunakan opsi yang samaisearchp-set-region-flag
,, untuk mengontrol ini, dan perintahset-region-around-search-target
memiliki efek yang sama.sumber