Sublime Text: найти и заменить в выделении


21

Позволяет ли Sublime Text 2 пользователю выполнять поиск и замену, ограничиваясь текущим выбором?

Я должен думать, что должен, только я не смог после нескольких поисков найти, как это осуществить.

Ответы:


23

Для этого в ST2 есть кнопка.

Скриншот


4
Правда есть кнопка. Но как ты это используешь? В частности, как вы устанавливаете «выбор»? По моему опыту ST2 использует выбор с момента, когда вы открыли панель поиска. Так что, если панель уже открыта, вы должны сначала закрыть ее (Esc), затем выбрать диапазон текста, который вы хотите исследовать, а затем открыть его снова (Ctrl + F или Ctrl + H). Совет от профессионала: если выделение занимает несколько строк, оно не заменит ваше текущее поисковое выражение.
Роберт,

3
Cmd + Opt + F на Mac, чтобы открыть консоль поиска и замены.
Михей

2
Я полностью озадачен тем, почему не существует сочетания клавиш для этого «В выборе», особенно потому, что есть для всех других вариантов! Мне действительно нужно подвести руку к мышке, чтобы включить это? Кажется, идет против всех стендов ST ... (я использую ST3)
TheStoryCoder

5
@TheStoryCoder да, это глупо, что это не сочетание клавиш, но его было легко сделать, за исключением того, что название команды не было задокументировано, но мне повезло, и я угадал. Вот код для добавления к вашим пользовательским сочетаниям клавиш: {"keys": ["alt + y"], "command": "toggle_in_selection", "context": [{"key": "setting.is_widget", "operator" : "равно", "операнд": верно}]},
Owen_R

Примечание для других людей, которые были сбиты с толку, как я: когда вы выделяете несколько строк текста, затем нажимаете Ctrl + H (который открывает Find & Replace) и начинаете печатать в поле «Find what», выделенные строки перестают выглядеть выделенными, но они все еще есть . Если бы не эта проблема, я бы даже не искал решение и не нашел бы этот пост. Кстати, я помню, что этой проблемы не было раньше, поэтому, возможно, после перезагрузки или чего-то еще она исчезнет.
Стефан Монов

7

Если ваш выбор включает разрыв строки, кнопка «в пределах выделения» будет автоматически активирована - на ST2

Умная активация была потеряна на ST3, к сожалению. Вы можете следить за этим здесь http://www.sublimetext.com/forum/viewtopic.php?f=3&t=11679


10
Теперь можно вернуть эту функциональность, используя: "auto_find_in_selection": true
mdrozdziel

Как мне вызвать его автоматически, если в нем нет разрыва строки? Например, когда у вас действительно длинная строка, которая охватывает много «строк»? Каждый раз, когда я выбираю эту строку и запускаю поиск, она отключает опцию «in selection».
user2544542

6

Вот что вам нужно добавить в ваши пользовательские сочетания клавиш:

{ "keys": ["alt+y"], "command": "toggle_in_selection", "context":
    [
        { "key": "setting.is_widget", "operator": "equal", "operand": true }
    ]
},

Да, глупо, что это не набор ключей по умолчанию.

Также имя команды " toggle_in_selection" не было задокументировано, но я угадал и повезло.


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

/*
btw, the way i want to use find by default
(actually, i use replace by default, but same dif),
is for "in_selection" to be true by default,
*unless* the selection is empty.
(
the default is that "in_selection" is *false* by default,
unless the selection contains a newline.
)
i finally got around to digging up how to get that,
which is apparently by changing the *keybindings* you use to pop open the find(/replace) panel?
*/
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace", "in_selection": true}},
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace", "in_selection": false},
    "context":
        [
            { "key": "selection_empty", "operator": "equal", "operand": true}
        ]
    },

Связывание клавиш уже существует по умолчанию.
elsadek

Да. Интересно, почему я пропустил это, тогда ... единственные вещи "toggle_", которые у меня были в моих привязках по умолчанию, были:toggle_side_bar toggle_full_screen toggle_distraction_free toggle_overwrite toggle_record_macro toggle_setting toggle_comment toggle_case_sensitive toggle_regex toggle_whole_word toggle_preserve_case
Owen_R

3

(со специфичными для Mac OS X ярлыками) заменить some nameна new name:

  1. поместите курсор над текстом
  2. Найти some name: cmdfвведите some name(иногда нужно нажать return)
  3. Укажите заменить: shiftcmdr, tabtabчтобы заменить поля, тип new name, не нажмитеreturn
  4. повторить, altcmdeпока не сделано.

Кто-нибудь знает более быстрый способ сделать это ?! Это довольно смешно и неоправданно трудно запомнить
AJP

см. ответ @ oliver-g - ST2 делает это по умолчанию, и если вы его отключили, просто нажмите ctrl+Hи оставьте «Найти что»: есть кнопка с заголовком «В выборе»
Питер

2

Просто выберите текст, который вы хотите найти, затем нажмите «Заменить» в меню поиска. Это будет автоматически сделано в пределах вашего выбора.


0

ключ для работы с заменой в выделении состоит в том, чтобы ПЕРВЫЙ выделить текст, затем перейти к поиску> заменить, затем ввести текст для того, что вы собираетесь найти и заменить, затем нажмите кнопку с подсказкой «в выделении» и нажмите «Заменить все». ..


0

Я добавляю другой ответ, так как лучшее и наиболее полезное решение (на мой взгляд) было скрыто в комментарии, и я чуть не пропустил его (спасибо @mdrozdziel).

Выделите текст, который хотите найти, нажмите Shift+, Hчтобы вызвать панель инструментов поиска и замены. Слева от банка кнопок находится кнопка, которая активирует поиск по выбору.

Это по умолчанию отключена в ST3 , но вы можете установить его по умолчанию, когда вы выберете более чем одну строку, добавив "auto_find_in_selection": trueв файл предпочтений (найдено путем ввода Alt, N, S, Enter).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.