Піднесений текст: Знайти та замінити в межах вибору


21

Чи дозволяє Sublime Text 2 користувачеві виконувати пошук і заміну, обмежений поточним вибором?

Я думаю, що це має бути, тільки я не зміг після кількох пошуків знайти, як це здійснити.

Відповіді:


23

Для ST2 є кнопка для цього.

Знімок екрана


4
Правда, є кнопка. Але як ти ним користуєшся? Зокрема, як ви встановлюєте "вибір"? З мого досвіду ST2 використовує вибір з моменту відкриття панелі пошуку. Отже, якщо панель відкрита, вам потрібно спершу її закрити (Esc), а потім виберіть діапазон тексту, який ви хочете вивчити, а потім відкрити його знову (Ctrl + F або Ctrl + H). Порада: Якщо виділення охоплює кілька рядків, воно не замінить поточний пошуковий вираз.
Роберт

3
Cmd + Opt + F на mac, щоб відкрити консоль пошуку та заміни.
Міхей

2
Я повністю спантеличений тим, чому немає клавіатурного комбінації для цього "У виборі", особливо оскільки існує для всіх інших варіантів! Чи дійсно мені потрібно рухати рукою мишку, щоб це ввімкнути? Здається, це суперечить усім
позиціям

5
@TheStoryCoder так, це німо, що це не клавіатурний комбінація, але зробити це виявилося легко, за винятком того, що ім'я команди не було задокументоване, але мені пощастило і правильно вгадали. Ось код, який потрібно додати до ваших користувальницьких клавішних зв'язків: {"keys": ["alt + y"], "command": "toggle_in_selection", "context": [{"key": "setting.is_widget", "operator" : "рівний", "операнд": true}]},
Owen_R

Примітка для інших людей, котрі плутаються, як я: коли ви вибираєте кілька рядків тексту, натисніть Ctrl + H (що відкриває Знайти та замінити) і почніть вводити поле "Знайти що", вибрані рядки перестають виглядати вибраними, але вони все ще є . Якби не ця проблема, я б навіть не шукав рішення і знайшов цю посаду. До речі, я, мабуть, пам’ятаю, що цієї проблеми раніше не було, тому, можливо, після перезавантаження або щось зникне.
Стефан Монов

7

Якщо ваш вибір включає розрив рядка, кнопка "в межах вибору" буде автоматично активована - на ST2

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


10
Тепер можна повернути цю функціональність за допомогою: "auto_find_in_selection": true
mdrozdziel

Як викликати його автоматично, якщо він не включає розрив рядка? Наприклад, коли у вас дійсно довгий рядок, який охоплює багато "рядків"? Кожен раз, коли я вибираю цей рядок і викликаю пошук, він вимикає параметр "у виборі".
користувач2544542

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_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.