Переменная Переименования Emacs - PullRequest
21 голосов
/ 29 марта 2012

Как мне переименовать переменную в emacs?Eclipse имеет аккуратное действие рефакторинга «переименовать», которое позволяет переименовывать переменную с учетом области видимости, что может быть намного проще в использовании, чем выполнение локализованных замещающих строк, особенно если имя переменной является символом, подобным e.Имеется ли в emacs похожая функциональность?

Ответы [ 8 ]

16 голосов
/ 13 января 2014

Новый Emacs имеет M-s . для выбора символа под курсором, тогда вы можете C-M-%, и он будет использовать текущий выбранный символ для выполнения замен.ПРИМЕЧАНИЕ. Это простая замена строки, а не функция IDE «Переименовать переменную».

9 голосов
/ 29 марта 2012

Вы можете использовать сужение , чтобы показать только часть буфера, а поиск / замена будет работать только в суженной области.Например, вы можете использовать Cx nd для сужения до текущей функции или выбрать нужный регион и сделать Cx nn .Выполните поиск / замену, затем увеличьте до Cx nw .Для переменной из одной буквы, например e, выполните query-replace-regexp с CM -% и используйте регулярное выражение, например \be\b, чтобы оно работало только с отдельными e, а не внутри другихслова.

Редактировать: Просто подумал о другом.Если вы выбираете регион, поиск / замена работает только в этой области.Таким образом, вы можете просто выбрать область, которую вы хотите заменить, и затем выполнить операцию query-replace-regexp.

8 голосов
/ 29 марта 2012

iedit был создан для такого рода вещей.

3 голосов
/ 15 марта 2017

В Python это более или менее выполнимо с библиотекой рефакторинга Rope, для которой я советую использовать emacs-traad в MELPA (просто установить и легко использовать).

После установки у нас есть функция M-x traad-rename, которая переименовывает переменную в проекте.

Для более простого поиска и замены у нас есть вышеупомянутый Iedit, а также Projctile's projectile-replace.

2 голосов
/ 29 марта 2012

Я не уверен, какой у вас язык исходного кода.Поскольку вы упомянули об Eclipse, я предполагаю, что это Java.Одним из вариантов является использование tags-query-replace функциональности.Используйте Excuberant Ctags с переключателем -e для генерации тегов стиля etgas и вызова tags-query-replace.

1 голос
/ 27 октября 2017

Помимо уже предложенного iedit , вы также можете рассмотреть пакет нескольких курсоров . Ознакомьтесь с статьей об этом с анимацией живого издания.

0 голосов
/ 23 декабря 2017

Поддержка этого вида современной функции IDE постепенно внедряется в мезозойские редакторы, такие как Emacs. Для Scala вы можете получить это через Ensime.

http://ensime.github.io/editors/emacs/userguide/#rename

0 голосов
/ 23 апреля 2017

Поскольку вы запросили функцию Eclipse, Iedit не будет ее сокращать. Это не так умно, что если у вас есть две переменные с одинаковыми именами в разных областях? Это изменило бы их обоих. Такого не бывает при затмении! Вам понадобится инструмент для конкретного языка, если вы ожидаете такого рода осведомленности.

С машинописью вы можете использовать Прилив . С golang вы можете использовать go-doctor . Конкретно с Java я ничего не смог найти, но я использую meghanada , и это здорово. Но рефакторинг в своем списке TODO! Вы также используете emacs в качестве клиента для eclipse с eclim.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...