2017-06-10 38 views
6

thường gặp khi tôi đang làm một tìm và thay thế trong vi tôi sẽ làm điều đó như thế này:Làm thế nào để quay trở lại trang trước khi thực hiện tìm kiếm thay thế xác nhận trong vi?

:%s/find/replace/gc 

này cung cấp cho bạn các tùy chọn để bỏ bằng cách nhấn n, hoặc thay thế bằng cách nhấn y. Tuy nhiên, đôi khi tôi vô tình bỏ qua một tệp trong một tệp lớn bằng cách nhấn n khi tôi muốn nhấn y.

Làm cách nào để quay lại trang trước và cho tôi thay đổi thứ hai?

Về cơ bản, làm cách nào để tạm thời chuyển sang hướng khác find (search)? cảm ơn.

+0

xảy ra trong 'vim' quá – Sother

+0

Lưu ý rằng' Shift + N' KHÔNG LÀM VIỆC :) – Sother

+1

Trong chế độ xác nhận thay thế chỉ kích hoạt các phím '(y, n, q, l, a,^E,^Y)' công việc. –

Trả lời

2

Đây không phải là câu trả lời cho câu hỏi, mà là một giải pháp thay thế rất tốt. Gần đây tôi đã phát hiện ra plugin CtrlSF và nó cải thiện đáng kể quá trình tìm kiếm/thay thế.

Về cơ bản, bạn có kết quả tìm kiếm trong bộ đệm và bạn có thể thực hiện tất cả các thay thế trong bộ đệm đơn này.

Trong trường hợp của bạn, trước tiên bạn cần :CtrlSF find, lấy bộ đệm với tất cả các kết quả phù hợp trong tất cả các tệp và sau đó bạn làm /find và di chuyển với mục tiêu của bạn và sau đó lặp lại thay thế bằng .).

Nếu bạn bỏ lỡ một số mục tiêu, bạn chỉ cần nhấn N để quay lại kết quả trước đó và thay thế nó.

2

Tôi không chắc chắn nếu bạn muốn ngắt hoạt động tìm thay thế hiện tại và tiếp tục lại. Nhưng nếu đó là chấp nhận được, đây là đề nghị của tôi:

  1. Bắt đầu của bạn để tìm hàng thay thế theo cách bạn đề cập: :%s/find/replace/gc
  2. Sau khi bạn vô tình bỏ qua thay người bằng cách nhấn n, gián đoạn việc tìm kiếm bằng cách nhấn <ctrl-C>
  3. Nhấn <shift-N> quay trở lại sự xuất hiện trước của find hạn của bạn
  4. Run tìm-thay thế một chút khác biệt khi bạn đang ở từ này: :.,$s/find/replace/gc
  5. Tiếp tục hoạt động

Tất cả chức năng này hoạt động với khả năng gốc vim mà không phải cài đặt bất kỳ addon nào.

Lưu ý: Các .,$ phạm vi specifier chỉ để thực hiện :s (substitute) hoạt động trên một loạt các dòng bắt đầu bằng hiện dòng (chỉ ra bởi .) và cho đến khi dòng cuối cùng (chỉ ra bởi $).

Note2: Nó có thể được biết đến với bạn, nhưng nhắc lại cho bất kỳ ai khác tình cờ gặp bài này tìm kiếm một cái gì đó tương tự - Các % phạm vi specifier chỉ để thực hiện :s (substitute) hoạt động trên tất cả các dòng của bộ đệm hiện đang hoạt động.

Các vấn đề liên quan