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과 거의 동일하게 작동