Заменить текст буквально без регулярного выражения в злом режиме Emacs

В vim я мог бы использовать :%sno/[abt]//g, чтобы буквально удалить весь текст "[abt]" (как описано здесь< /а>).

Я попробовал ту же команду в evil-mode, но он жалуется, что не понимает команду sno, так как я могу сделать то же самое в evil-mode?


person Daniel Wu    schedule 11.08.2014    source источник


Ответы (2)


Насколько мне известно, evil не поддерживает (пока?) варианты регулярных выражений "магия/без магии" (на самом деле, он выполняет лишь небольшое подмножество функций ex, поэтому я не думаю, что % тоже будет работать). Как следует из ответа @Ehvince, стандартный способ Emacs для замены - это query-replace или query-replace-regexp. Если вы хотите придерживаться evil, просто закройте квадратные скобки обратной косой чертой:

:s/\[abt\]//g

Примечание: символы обратной косой черты в Emacs часто кусают людей, пришедших из других сред или языков программирования; взгляните на нижнюю часть этого руководства. узел обратной косой черты для получения дополнительной информации.

person Dan    schedule 11.08.2014
comment
Хорошо знать! % — хорошая функция; ответ исправлен, чтобы зачеркнуть оскорбительный отрывок. - person Dan; 12.08.2014

Вы бы использовали команду emacs query-replace, связанную с M-%:

M-% [abt] RET <nothing> RET

а затем утвердите каждое вхождение с помощью y или все с помощью !.

Док находится по адресу C-h f query-replace.

query-replace-regexp привязан к C-M-%.

person Ehvince    schedule 11.08.2014