Emacs
如何在 Emacs 中替換游標下的目前單詞
如何在 Emacs 中替換游標下的目前單詞?
我知道我可以使用 query-replace 或 replace-string 但每次我這樣做時我都必須輸入要替換的整個字元串,這很煩人。
Vi 具有等效的命令 cword,我可以使用快捷方式將游標下的單詞拉出以進行替換:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
有人知道如何用 Emacs 做嗎?
增量搜尋具有此功能,但替換功能沒有。幸運的是,一旦您選擇了搜尋詞,增量搜尋 *確實可以切換到替換模式。*所以:
- 按下
C-s
切換到增量搜尋模式- 按下
C-w
可將目前單詞拉入搜尋緩衝區。您可以按住它來追加多個單詞,也可以C-M-y
用來拉出單個字元和C-y
拉出整行- 按下
M-%
以使用您已經建構的搜尋緩衝區切換到替換模式您可能從
M-%
正常使用中知道,這是一種查詢替換模式,它會提示您如何處理每個匹配項。如果您只想替換它們,請點擊!
第一場比賽。
;; 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) ))