Văn bản tuyệt vời: Tìm và thay thế trong lựa chọn


21

Sublime Text 2 có cho phép người dùng thực hiện tìm và thay thế, giới hạn trong lựa chọn hiện tại không?

Tôi nghĩ rằng nó phải, chỉ có tôi đã không thể sau nhiều lần tìm kiếm để tìm cách thực hiện nó.

Câu trả lời:


23

Có một nút cho điều đó trong ST2.

Ảnh chụp màn hình


4
Đúng, có một nút. Nhưng làm thế nào để bạn sử dụng nó? Cụ thể, làm thế nào để bạn thiết lập "lựa chọn"? Theo kinh nghiệm của tôi, ST2 sử dụng lựa chọn từ khi bạn mở thanh tìm kiếm. Vì vậy, nếu thanh đã mở, bạn phải đóng nó trước (Esc), sau đó chọn phạm vi văn bản bạn muốn kiểm tra và sau đó mở lại (Ctrl + F hoặc Ctrl + H). Mẹo chuyên nghiệp: Nếu lựa chọn kéo dài nhiều dòng, nó sẽ không thay thế biểu thức tìm kiếm hiện tại của bạn.
Robert

3
Cmd + Opt + F trên mac để mở bảng điều khiển find & thay thế.
Mi-chê

2
Tôi hoàn toàn bối rối về lý do tại sao không có phím tắt cho "Lựa chọn" đó, đặc biệt là vì có tất cả các tùy chọn khác! Tôi có thực sự phải di chuyển bàn tay của tôi để chuột để kích hoạt điều đó? Có vẻ như đi ngược lại tất cả ST là viết tắt của ... (Tôi đang sử dụng ST3)
TheStoryCoder

5
@TheStoryCoder vâng, thật ngu ngốc khi không có phím tắt, nhưng hóa ra nó dễ tạo ra, ngoại trừ tên của lệnh không được ghi lại nhưng tôi đã may mắn và đoán đúng. Đây là mã để thêm vào keybindings người dùng của bạn: {"key": ["alt + y"], "lệnh": "toggle_in_selection", "bối cảnh": [{"key": "settings.is_widget", "toán tử" : "bằng", "toán hạng": đúng}]},
Owen_R

Một lưu ý cho những người khác cũng bị nhầm lẫn như tôi: khi bạn chọn một vài dòng văn bản, sau đó nhấn Ctrl + H (mở Tìm & Thay thế) và bắt đầu nhập vào trường "Tìm gì", các dòng được chọn sẽ ngừng tìm, nhưng họ vẫn còn . Nếu không có vấn đề đó, tôi thậm chí sẽ không tìm kiếm giải pháp và tìm thấy bài đăng này. BTW Tôi dường như nhớ rằng vấn đề không có ở đó trước đó, vì vậy có thể sau khi khởi động lại hoặc một cái gì đó nó sẽ biến mất.
Stefan Monov

7

Nếu lựa chọn của bạn bao gồm ngắt dòng, nút "trong lựa chọn" sẽ được kích hoạt tự động - trên ST2

Thật không may, kích hoạt thông minh đã bị mất trên ST3. Bạn có thể theo dõi trên đó tại đây http://www.sublimetext.com/forum/viewtopic.php?f=3&t=11679


10
Bây giờ có thể mang lại chức năng này bằng cách sử dụng: "auto_find_in_selection": true
mdrozdziel

Làm cách nào để tôi gọi nó tự động khi nó không bao gồm ngắt dòng? Ví dụ khi bạn có một hàng thực sự dài kéo dài nhiều "hàng"? Mỗi khi tôi có dòng đó được chọn và gọi tìm kiếm, nó sẽ vô hiệu hóa tùy chọn "trong lựa chọn".
dùng2544542

6

Đây là những gì bạn cần thêm vào keybindings của người dùng:

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

Vâng, thật ngu ngốc khi đó không có bộ khóa liên kết mặc định.

Ngoài ra tên lệnh " toggle_in_selection" không được ghi lại, nhưng tôi đoán và đã gặp may.


CHỈNH SỬA THÊM:

/*
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}
        ]
    },

Các keybinding đã tồn tại theo mặc định.
elsadek

Huh. Tự hỏi tại sao tôi lại thiếu nó, sau đó ... những thứ "toggle_" duy nhất tôi có trong các ràng buộc mặc định của mình là: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

(với các phím tắt cụ thể của Mac OS X) để thay thế some namebằng new name:

  1. đặt con trỏ phía trên văn bản
  2. Tìm some name: cmdf, loại some name(đôi khi cần nhấn return)
  3. Chỉ định thay thế : shiftcmdr, tabtabđể có thể thay thế trường, nhập new name, không nhấnreturn
  4. lặp lại altcmdecho đến khi hoàn thành

Có ai biết một cách nhanh hơn để làm điều này?! Điều này khá vô lý và khó nhớ một cách không cần thiết
AJP

xem câu trả lời của @ oliver-g - ST2 làm như vậy theo mặc định và nếu bạn đã tắt nó, chỉ cần nhấp ctrl+Hvà trái để "Tìm gì:" có một nút được đặt tên "Trong lựa chọn"
Peter

2

Chỉ cần chọn văn bản bạn muốn tìm kiếm, sau đó nhấp vào Thay thế từ menu tìm. Nó sẽ tự động làm điều đó trong lựa chọn của bạn.


0

Chìa khóa để thay thế trong lựa chọn là FIRST chọn văn bản sau đó đi tìm> thay thế sau đó điền văn bản cho những gì bạn sẽ tìm và thay thế, sau đó kiểm tra nút tooltipped "trong lựa chọn", sau đó nhấp vào "Thay thế tất cả". ..


0

Tôi đang thêm một câu trả lời khác là giải pháp tốt nhất và hữu ích nhất (theo ý kiến ​​của tôi) đã bị ẩn trong một bình luận và tôi gần như đã bỏ lỡ nó (cảm ơn @mdrozdziel).

Chọn văn bản bạn muốn tìm kiếm trong, nhấn Shift+ Hđể hiển thị thanh công cụ tìm và thay thế. Có một nút ở bên phải của ngân hàng các nút ở bên trái sẽ kích hoạt tìm kiếm trong lựa chọn.

Đây là tắt theo mặc định trong ST3 nhưng bạn có thể thiết lập nó để mặc định khi bạn chọn nhiều hơn một dòng bằng cách thêm "auto_find_in_selection": truevào tập tin sở thích của bạn (tìm thấy bằng cách nhập Alt, N, S, Enter).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.