Как заменить текущее слово под курсором в Emacs?
Я знаю, что могу использовать query-replace или replace-string, но каждый раз, когда я делаю это, мне приходится вводить всю строку для замены, это просто раздражает.
Vi имеет эквивалентное командное слово, и я могу использовать ярлык, чтобы вытянуть слово под курсором для замены:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Кто-нибудь знает, как это сделать с Emacs?
Ответы:
Использование копирования и вставки:
M-d C-_ M-x replace-string RET C-y
(kill-word
,undo
,replace-string
,yank
). Если вы уже начали замену, вы можете переключиться обратно в исходный буфер , чтобы сделать копипаст с обычным окном или буфер переключения команд:M-x replace-string RET … 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
.источник
Инкрементальный поиск имеет эту функцию, а функции замены - нет. К счастью, инкрементальный поиск позволяет переключаться в режим замены после того, как вы выбрали поисковый запрос. Так:
Как вы, вероятно, знаете из M-%обычного использования , это режим замены запроса, в котором он запрашивает, что делать с каждым совпадением. Если вы просто хотите заменить их всех, нажмите !на первый матч
источник
источник
Я абсолютно новичок в emacs, но могу предложить следующее:
Теперь вы можете написать новое слово. Работает почти как
cw
в vimисточник
Если вы переходите к поиску и замене,
M-S-%
просто нажимаяM-n
заполняющее слово под курсором, повторное нажатие снова оборачивает его в «разделитель символов».источник
Я боролся и хотел того же самого после перехода с Vim на Emacs.
После некоторых исследований и экспериментов я обнаружил нижеприведенную функцию, которая позволяет вам делать то же самое с установленным пакетом Evil или с использованием spacemacs.
Он также работает с активным регионом (или визуальным выделением в терминах vim), и это может быть весьма полезно для замены слова наподобие abc-def-hij:
затем в вашем init.el определите ту же привязку ключа:
связывание клавиш немного отличается от vim, которое называется "пробел z", но я не выяснил, как отобразить это в emacs, когда есть режим зла. Продолжайте жаловаться, не префикс и т. д., и я относительно новичок в Emacs. Но все еще не так уж и плохо, и я доволен этим решением на данный момент.
источник
На этот вопрос уже ответили, и я не могу комментировать, потому что у меня еще недостаточно репутации. Но то, что вы ищете,
ciw
в Vim.В emacs наиболее близка к этой комбинации:
M-b M-d
Это возвращает к началу слова, на котором находится курсор, а затем удаляет слово.
источник