Вопрос или проблема
Предположим, я работаю с файлом в Sublime Text 3, который содержит множество вхождений переменной с одним символом, c
, которую я хочу переименовать в другое имя.
Когда я выбираю один экземпляр этой переменной курсором, Sublime Text автоматически выделяет другие экземпляры этой переменной для меня:
Это визуальное выделение включается настройкой: "match_selection": true
, и явно показывает, что Sublime достаточно умен, чтобы выделять только другие экземпляры этого символа, где это имеет отношение к переменной.
Однако, несмотря на то, что это выделение указывает на то, что это должно быть возможно, похоже, что нет простого способа автоматически выбрать только эти выделенные переменные c
.
Если я хочу быстро переименовать все экземпляры переменной c
с помощью нескольких курсоров, используя Быстрое добавление следующего (cmd+D
) или Быстрый поиск всех (ctrl+cmd+G
), вместо того чтобы выбирать только эту переменную c
, я получаю каждое отдельное вхождение символа ‘c’:
Это явно не полезно, так как это не имеет никакой корреляции с самой переменной; это просто слепо выбрало все буквы “c”, независимо от того, являются ли они выбранной переменной или нет.
Есть ли способ заставить Быстрое добавление следующего и Быстрый поиск всех вести себя так же, как правила выделения, которые использует настройка match_selection
? Это было бы намного полезнее в этом случае, чем просто слепо выбирать каждое вхождение выбранного символа(ов).
Я что-то упускаю? Я не могу найти опцию Быстрый поиск всех вхождений или Быстрое добавление следующей переменной, или какой-либо способ настроить поведение по умолчанию Быстрого поиска всех и Быстрого добавления следующего. Насколько я могу судить, мои единственные варианты — либо вручную переименовать каждое вхождение c
, либо написать какой-то собственный регулярный выражение, чтобы достичь того же результата, что и оригинальный алгоритм выделения.
Фокус заключается в том, чтобы начать с пустого выделения, с курсором прямо слева от слова, которое вы хотите выбрать. Затем нажмите Ctrl⌘G (или AltF3 на Windows/Linux), чтобы выбрать все вхождения этого слова:
или нажмите ⌘D (CtrlD на Win/Lin), чтобы начать выделять их по одному.
При выборе и переименовании всех вхождений переменной это не подразумевает, что все строки должны быть переименованы. Например, ‘c’ может встречаться во многих словах, не будучи переменными. Чтобы ПЕРЕИМЕНОВАТЬ ТОЛЬКО те вхождения, которые являются переменными, можно использовать надстройку anaconda:
Щелкните правой кнопкой мыши на переменной
Выберите Anaconda -> Переименовать объект под курсором
Ps. Можно дважды щелкнуть на переменной, чтобы проверить, каким будет выделение, прежде чем выполнить переименование.
Ответ или решение
Поведение функции быстрого добавления/поиска совпадений в Sublime Text 3
В работе с Sublime Text 3 пользователи часто сталкиваются с задачей переименования переменных, особенно когда эти переменные представляют собой однобуквенные обозначения, такие как «c». Эта задача усложняется, когда необходимо выбрать только те экземпляры переменной, которые соответствуют контексту, в отличие от всех вхождений символа «c» в файле.
Проблема выделения переменных
По умолчанию, функция выделения (выбор) в Sublime Text 3 позволяет пользователям выделять все вхождения выбранного текста. Однако, в случае однобуквенных переменных, такие как «c», эта функция может привести к нежелательному выделению всех символов «c», включая те, которые не являются переменными. Это создает дополнительные сложности при использовании команд, таких как «Quick Add Next» (Cmd+D) или «Quick Find All» (Ctrl+Cmd+G), которые, к сожалению, не ограничиваются контекстом.
Подход к решению задачи
Чтобы правильно выделить и переименовать только переменные, нужно начать со следующего этапа:
- Пустое выделение: Установите курсор влево от переменной, которую хотите выделить.
- Выбор всех вхождений: Нажмите на сочетание клавиш Ctrl+Cmd+G (в Windows/Linux это Alt+F3). Это выделит только те вхождения, которые соответствуют всей переменной, а не отдельным символам.
Это действие позволяет избежать случайного выделения частей слов или других ненужных экземпляров переменной.
Ручное выделение
Если вам нужно поэтапно выбирать вхождения переменной, вы можете использовать комбинацию клавиш Cmd+D (Ctrl+D на Windows/Linux) для поочередного выделения подходящих экземпляров переменной. Это позволяет вручную управлять выбором и избегать нежелательных совпадений.
Использование дополнений
Для расширенного функционала, который направлен на решение данной проблемы, можно рассмотреть использование плагинов, таких как Anaconda. Этот плагин предоставляет возможность:
- Профессионального управления переменными.
- Легкого переименования объектов с учетом контекста.
Для того чтобы переименовать переменную с помощью Anaconda, выполните следующие шаги:
- Щелкните правой кнопкой мыши на переменной.
- Выберите опцию Anaconda -> Rename Object under cursor.
- Возможно предварительное выделение, чтобы увидеть, какие вхождения будут переименованы, прежде чем завершить действие.
Заключение
Хотя Sublime Text 3 предлагает полезные функции для выбора и переименования переменных, важно учитывать специфику контекста. Использование чистых выделений и дополнений, таких как Anaconda, значительно упростит задачу переименования только необходимых экземпляров переменных и избавит от лишних манипуляций. Таким образом, с помощью простых шагов можно эффективно управлять своим кодом, минимизируя вероятность ошибок в процессе редактирования.