Thi*_* Pl 26 emacs search replace
如何在 Emacs 中替换光标下的当前单词?
我知道我可以使用 query-replace 或 replace-string 但每次我都必须输入要替换的整个字符串,这很烦人。
Vi 具有等效的命令 cword,我可以使用快捷方式将光标下的单词拉出以进行替换:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Run Code Online (Sandbox Code Playgroud)
有人知道如何用Emacs做到这一点吗?
Ema*_*erg 10
;; 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) ))
Run Code Online (Sandbox Code Playgroud)
使用复制粘贴:( , M-d C-_ M-x replace-string RET C-y
, kill-word
, ) 。如果您已经开始替换,您可以切换回原始缓冲区,使用常用的窗口或缓冲区切换命令进行复制粘贴:。您可以在(例如)上使用前缀参数来替换多个单词。undo
replace-string
yank
M-x replace-string RET \xe2\x80\xa6 C-x o M-d C-_ C-x o C-y
M-d
ESC 4 2 M-d
如果您打算替换光标处的一个或多个单词,您可以从增量搜索 ( C-s
) 开始,使用C-w
开始搜索光标处的单词,然后按M-%
切换到replace-string
。