Я боролся и хотел того же самого после перехода с Vim на Emacs.
После некоторых исследований и экспериментов я обнаружил нижеприведенную функцию, которая позволяет вам делать то же самое с установленным пакетом Evil или с использованием spacemacs.
Он также работает с активным регионом (или визуальным выделением в терминах vim), и это может быть весьма полезно для замены слова наподобие abc-def-hij:
; replace current word or selection using vim style for evil mode
(defun evil-replace-word-selection()
(interactive)
(if (use-region-p)
(let (
(selection (buffer-substring-no-properties (region-beginning) (region-end))))
(if (= (length selection) 0)
(message "empty string")
(evil-ex (concat "'<,'>s/" selection "/"))
))
(evil-ex (concat "%s/" (thing-at-point 'word) "/"))))
затем в вашем init.el определите ту же привязку ключа:
(global-set-key (kbd "\C-co") 'evil-replace-word-selection)
связывание клавиш немного отличается от vim, которое называется "пробел z", но я не выяснил, как отобразить это в emacs, когда есть режим зла. Продолжайте жаловаться, не префикс и т. д., и я относительно новичок в Emacs. Но все еще не так уж и плохо, и я доволен этим решением на данный момент.