Bagaimana cara mengganti kata saat ini di bawah kursor di Emacs?
Saya tahu bahwa saya bisa menggunakan query-replace atau replace-string tetapi setiap kali saya melakukannya saya harus mengetik seluruh string yang akan diganti, ini hanya mengganggu.
Vi memiliki perintah setara kata dan saya bisa menggunakan jalan pintas untuk menarik kata di bawah kursor untuk penggantian:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Adakah yang tahu bagaimana melakukannya dengan Emacs?
Jawaban:
Gunakan copy-paste:
M-d C-_ M-x replace-string RET C-y
(kill-word
,undo
,replace-string
,yank
). Jika Anda sudah mulai penggantian, Anda dapat beralih kembali ke buffer asli untuk melakukan copy-paste dengan jendela biasa atau buffer perintah beralih:M-x replace-string RET … C-x o M-d C-_ C-x o C-y
. Anda dapat menggunakan argumen awalan padaM-d
(misalnyaESC 4 2 M-d
) untuk mengganti beberapa kata.Jika Anda berencana untuk mengganti satu atau lebih kata pada kursor, Anda dapat mulai dari pencarian bertahap (
C-s
), gunakanC-w
untuk mulai mencari kata di bawah kursor, lalu tekanM-%
untuk beralih kereplace-string
.sumber
Pencarian tambahan memiliki fitur ini, tetapi fungsi ganti tidak. Untungnya, pencarian tambahan memang memiliki cara untuk mengganti untuk mengganti mode setelah Anda memilih istilah pencarian. Begitu:
Seperti yang mungkin Anda ketahui dari menggunakan secara M-%normal, ini adalah mode ganti permintaan yang meminta Anda untuk melakukan apa dengan setiap kecocokan. Jika Anda hanya ingin mengganti semuanya, tekan !pada pertandingan pertama
sumber
sumber
Saya benar-benar baru untuk emacs tetapi saya dapat menyarankan yang berikut ini:
Sekarang Anda dapat menulis kata baru. Bekerja hampir seperti
cw
di vimsumber
Jika Anda masuk ke pencarian dan ganti dengan
M-S-%
hanya menekanM-n
mengisi kata di bawah kursor, menekannya lagi membungkusnya dalam "pembatas simbol".sumber
Saya berjuang dan menginginkan hal yang sama sejak pindah dari Vim ke Emacs.
Setelah beberapa penelitian dan percobaan, saya menemukan fungsi di bawah ini yang memungkinkan Anda untuk melakukan hal yang sama dengan paket Evil diinstal atau menggunakan spacemacs.
Ia juga bekerja dengan region aktif (atau pemilihan visual dalam istilah vim) dan itu bisa sangat berguna untuk mengganti kata seperti abc-def-hij:
lalu di init.el Anda, tentukan pengikatan kunci yang sama:
keybinding sedikit berbeda dari vim yang merupakan "space z" tapi saya belum tahu bagaimana memetakan itu di emacs ketika mode jahat ada. terus mengeluh bukan awalan dll dan saya relatif baru untuk emacs. Tapi masih tidak terlalu buruk dan saya senang dengan solusi ini saat ini.
sumber
Ini sudah dijawab dan saya tidak bisa berkomentar karena saya belum memiliki reputasi yang cukup. Tapi apa yang Anda cari ada
ciw
di vim.Dalam emacs yang paling dekat dengan saya adalah kombinasi ini:
M-b M-d
Ini kembali ke awal kata kursor aktif dan kemudian menghapus kata.
sumber