2

В настоящее время я делаю это с помощью Find All (Cntrl+F old_var , alt+enter new_var), но это заменяет слова в моих комментариях и строках.

Комментарий в этом ответе предложил плагин PyRefactor, который требует веревку. Эти инструменты, кажется, имеют настройки по умолчанию, которые слишком жесткие для моих целей. Я просто хочу реорганизовать имена переменных в автономных скриптах Python с помощью Sublime Text 3.

Так в скрипте вроде

# Where did my hat go?
hat = 0
print(hat)
print("hat")

Переменная hat (не в строках и не в комментариях) может быть заменена на что-то еще одним нажатием горячей клавиши. Нет необходимости в специальной папке проекта / конфигурации, и ничего не изменилось в нескольких файлах. К сожалению, найти все hat -> llama делает ...

# Where did my llama go?
llama = 0
print(llama)
print("llama")

РЕДАКТИРОВАТЬ:

Я ценю решение для регулярных выражений @ Toto, но пока не очень хорошо разбираюсь в этом и хотел бы, чтобы метод работал более последовательно и его было легче запомнить. Есть ли плагин (или я могу написать один?) который идентифицирует все глобально определенные и объявленные переменные (аргументы в вызовах функций и т. д.) и допускает простой поиск и замену?

1 ответ1

1
  • Ctrl+H
  • Найти: (?:^(?<!#).*\K|(<?!"))\bhat\b(?!")
  • Заменить: llama
  • проверьте регулярное выражение
  • проверить целое слово
  • проверить Wrap
  • Заменить все

Объяснение:

(?:
    ^       : beginning of line
    (?<!#)  : negative lookbehind, zero-length assertion that makes sure we don't have # before
    .*      : 0 or more any character
    \k      : forget all we have seen until this position
  |         : OR
    (?<!")  : negative lookbehind, zero-length assertion that makes sure we don't have " before
)
\b      : word boundary to not match chat, remove it if you want to match chat also
hat     : literally
\b      : word boundary to not match hats, remove it if you want to match hats also
(?!")   : negative lookahead, zero-length assertion that makes sure we don't have " after

Дано:

# Where did my hat go?
hat = 0
chat = 0
print(hat)
print("hat")
print(chat)

Результат для данного примера:

# Where did my hat go?
llama = 0
chat = 0
print(llama)
print("hat")
print(chat)

До:

После:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .