Emacsでカーソルの下の現在の単語を置き換える方法は?
クエリを使用して文字列を置き換えることができることはわかっていますが、これを行うたびに置換する文字列全体を入力する必要があるので面倒です。
Viには同等のコマンドワードがあり、ショートカットを使用して単語をカーソルの下にドラッグして置き換えることができます。
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Emacsでこれを行う方法を知っている人はいますか?
答え1
増分検索にはこの機能がありますが、代替機能にはありません。幸いなことに、増分検索 するクエリを選択したら、交換モードに切り替えることができます。だから:
- C-s増分検索モードに切り替えるには、このキーを押します。
- C-w現在の単語を検索バッファにインポートするにはタップします。これをつかんで複数の単語を追加することができ、C-M-y個々の文字をプルし、C-y全体の行をプルするのにも使用できます。
- M-%構築した検索バッファを使用して代替モードに切り替えるにはクリックします。
一般的な使い方からわかるように、M-%これは各一致に対して何をすべきかを尋ねるクエリ置換パターンです。すべてを置き換えるには、!最初の一致を選択してください。
答え2
;; query-replace current word
(defun qrc (replace-str)
(interactive "sDo query-replace current word with: ")
(forward-word)
(let ((end (point)))
(backward-word)
(kill-ring-save (point) end)
(query-replace (current-kill 0) replace-str) ))
答え3
検索と置換に入ったら、カーソルの下にある単語をM-S-%
入力し、M-n
もう一度押すと「記号区切り記号」で囲まれます。
答え4
私はemacsに初めて触れましたが、次のことを提案できます。
M-b to move backward over a word
M-d to kill up to the end of the word
これで新しい単語を書くことができます。cw
vimとほぼ同じように動作