Меняя имена переменной в Vim

Получение rJava для распознавания кажется немного сложным. Похоже, что R может пытаться найти его не в том месте, и в этом случае вы можете попробовать решения аналогичного вопроса Ошибка пути Java при загрузке пакета rJava или комментарии к Проблема при подключении rJava в R Studio

В зависимости от того, для чего вам нужна библиотека xlsx, серия пакетов tidyverse имеет пакеты для чтения и записи файлов xlsx, которые не зависят от Java, см. здесь

88
задан Community 19 July 2018 в 19:09
поделиться

5 ответов

Следующее - то, как переименовать переменную, которая определяется в текущей области {}.

Перемещение Ваш курсор к переменному использованию. Нажмите gd. Что значит - курсор перемещения для определения. Теперь Нажмите [{ - это принесет, Вы к объему начинаете. Нажмите V - включит Визуальный выбор Строки. Нажмите % - перейдет к противоположному }, таким образом выберет целый объем. Нажмите :s/ - запускаются команды замены. <C-R>/ - вставит шаблон, которые соответствуют имени переменной (которые называют Вас, шли прежде нажатия gd). /newname/gc<CR> - будет инициировать поиск и замену подтверждением на каждом соответствии.

Теперь необходимо записать макросы, или еще лучше - отображают ключ.

Вот заключительные отображения:

" For local replace
nnoremap gr gd[{V%::s/<C-R>///gc<left><left><left>

" For global replace
nnoremap gR gD:%s/<C-R>///gc<left><left><left>

Помещенный это в Ваш .vimrc или просто выполняются. После того, как это нажатие gr на локальной переменной принесет Вам к [1 113] команда, где просто необходимо войти new_variable_name, и нажатие Входят .

184
ответ дан kevlar1818 24 November 2019 в 07:28
поделиться

AFAIK, в VIM нет никакой фактической поддержки рефакторинга. При выполнении переименовывания с намерением осуществления рефакторинг я обычно принимаю следующие меры предосторожности:

  1. Предел объем изменения мои метки использования.
  2. При вводе regex, заключите в скобки имя с \< и >. это заставит его распознать все слово, которое уменьшает типы неправильных, переименовывает, который произойдет.
  3. не делают, многострочная замена для сокращения возможностей плохой замены
  4. Просматривает разность кода тщательно, если это - что-нибудь кроме небольшого изменения.

Мое изменение конца выглядит примерно так

:'a,'bs/\<foo\>/bar

, я хотел бы быть неправым относительно там того, чтобы не быть инструментом рефакторинга для VIM, но я не видел его.

9
ответ дан Community 24 November 2019 в 07:28
поделиться

Вы могли использовать 'c' модификатор в расширенном поиске и замене, который попросит у Вас подтверждения для каждой замены. Это заняло бы больше времени, но это могло бы работать на неогромный файл кода:

%s/\$var/\$foo/gc

c обозначает, подтверждают.

3
ответ дан Sietse van der Molen 24 November 2019 в 07:28
поделиться

В c можно быть в состоянии сделать некоторые успехи с помощью cscope. Это предпринимает попытку понимания синтаксиса, так имел бы шанс знания, когда буква была переменной.

0
ответ дан Kim Reece 24 November 2019 в 07:28
поделиться

Если это через несколько файлов, можно рассмотреть взгляд на sed. Используйте находят для захвата файлов и xargs плюс sed для замены. Скажите, что Вы хотите заменить a_better_name во всех файлах, соответствующих *.c, Вы могли сделать

, находят. - называют "*.c" |, xargs sed-i-e 's/a/a_better_name/g'

Принимает во внимание, что это заменит ВСЕ случаи a, таким образом, можно будет захотеть более устойчивый regex.

0
ответ дан Drew Olson 24 November 2019 в 07:28
поделиться