Возвышенный текст: выберите все экземпляры переменной и измените имя переменной


Я новичок в Sublime, и я только что обнаружил, что если я выберу переменная (не просто любая строка) в моем коде все остальные экземпляры этой переменной получают обводку (белый контур) вокруг них:

есть ли сочетание клавиш, которое позволит мне выберите все эти экземпляры переменной и отредактируйте их все сразу?


вещи, которые я пробовал:

используя D, K и U позволяет мне выбрать их один за другим, но я должен вручную исключить непеременные совпадения строк:

и с помощью CtrlG просто выбирает все строка соответствует:

ясно, что Sublime способен различать переменные и строковые совпадения. Нет ли способа выбрать только переменную спички?

9 367

9 ответов:

1. ПОМЕСТИТЕ КУРСОР В ПЕРЕМЕННУЮ ⚠️ ничего не выделяйте; просто поместите курсор туда

text cursor on variable

2. НажмитеDпо мере необходимости. Не на Mac? CtrlD

more instances of variable highlighted

НЕ Работа?это сложно. Вот в чем фокус: начните с пустой выбор

тонкий, да?

дополнительные команды:

Найти Все: CtrlG выбирает все случаи сразу. Не на Mac? AltF3

Отменить Выбор:U шагов назад. Не на Mac? CtrlU

Быстрый Переход Далее:KD пропускает следующее событие. Не на Mac? CtrlK CtrlD

Sublime Docs


h / t adzenith.

Я знаю, что вопрос о Macs, но я получил здесь поиск ответа на Ubuntu, поэтому я думаю, что мой ответ может быть полезен кому-то.

простой способ сделать это: AltF3.

несмотря на большие усилия, я не нашел встроенный или плагин с помощью способа сделать то, что вы пытаетесь сделать. Я полностью согласен, что это должны возможно, так как программа сможет отличить foo с buffoon когда вы впервые выделите его, но никто, кажется, не знает, как это сделать.


однако, вот некоторые полезные ключевые комбо для выбора слов в Sublime Text 2:

CtrlG - выбирает все вхождения текущего слова ( AltF3 на Windows / Linux)

D - выбирает следующий экземпляр текущего слова (CtrlD)

  • K,D - пропускает текущий экземпляр и переходит к выбору следующего (CtrlK,CtrlD)
  • U - "мягкая отмена", возвращается к предыдущему выбору (Ctrl U)

E,H - использует текущий выбор в качестве поля "найти" в поле " Найти и заменить (CtrlE,CtrlH)

этой работал для меня. Поместите курсор в начале слова, которое вы хотите заменить, а затем

CtrlK,CtrlD,CtrlD ...

Это должно выбрать столько экземпляров слова, как вам нравится, то вы можете просто ввести замену.

магия в том, что вы должны начать с пустого выбора, поэтому поместите курсор перед словом / символом, который вы хотите выбрать, и нажмите Ctrl +D

для меня, это самая большая ошибка в Sublime. alt+f3 трудно достичь / запомнить, а ctrl+shift+g не имеет смысла, учитывая, что ctrl+d-это "добавить следующий экземпляр к выбору".

добавьте это в ваш Привязки Клавиш Пользователя (Настройки > Горячие Клавиши):

{ "keys": ["ctrl+shift+d"], "command": "find_all_under" },

теперь вы можете выделить что-то, нажмите Ctrl+Shift+d, и он добавит каждый другой экземпляр в файле к выбору.

Как user1767754 сказал, ключевым моментом здесь является, чтобы не сделать сначала каких-либо отбора. Просто поместите курсор внутри имени переменной, не дважды щелкните, чтобы выбрать его. Для односимвольных переменных поместите курсор в начало или конец переменной, чтобы не делать никакого выбора изначально. Теперь продолжайте бить Cmd+D для следующего выбора переменной или Ctrl+ Cmd+G для выбора всех переменных одновременно. Он будет волшебно выбирать только переменная.

Это упоминается @watsonic что: в Sublime Text 3 на macOS, начиная с пустой выбор, просто G ( AltF3 на Windows) делает трюк, а не D + G в Sublime Текст 2.

на всякий случай, если кто-то еще наткнулся на этот вопрос, ища способ заменить строку в нескольких файлах, это команда+ Shift+F