Подтвердить что ты не робот

Emacs Переименовать переменную

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

Вы можете использовать narrowing, чтобы отображать только часть буфера, а поиск/замена будет работать только в суженной области. Например, вы можете использовать C-x n d для сужения к текущей функции или выбрать нужный регион и сделать C-x n n. Сделайте поиск/замену, затем разверните его с помощью C-x n w. Для переменной с одной буквой, такой как e, выполните query-replace-regexp с C-M-% и используйте регулярное выражение, подобное \be\b, поэтому оно будет работать только на индивидуальном e вместо тех, что содержатся в других словах.

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

Ответ 7

Также, учитывая уже предложенный iedit, вы также можете рассмотреть multiple-cursors. Просмотрите статью об этом, с анимацией живого издания.

Ответ 8

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

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