Câu hỏi Làm thế nào để bạn tái sử dụng một lựa chọn chế độ trực quan?


Thông thường khi chỉnh sửa mã, tôi sẽ chọn một khối trong chế độ trực quan và thực hiện tìm kiếm và thay thế trên khối. Sau khi tôi thực hiện các thay đổi, tuy nhiên, nó rời khỏi chế độ trực quan. Làm thế nào để bạn làm một tìm kiếm mới và thay thế trên cùng một lựa chọn?


148
2017-12-10 16:58


gốc


Vâng tôi tìm thấy một cách, nhưng đó là một chút cồng kềnh:: '<,'> s / cũ / mới / g Bất kỳ cách nào để làm điều này w / o phải gõ vào '<,'>? - labyrinth


Các câu trả lời:


Bạn có thể chọn lại khu vực hình ảnh đã chọn cuối cùng với gv.


213
2017-12-10 23:59



Tuyệt vời! @ Heptite làm thế nào để tìm thấy lệnh này bởi bản thân mình w \ o Stackoverflow? - skywinder
@skywinder: giúp gv - Heptite
@ Heptite: Tôi không chắc chắn nếu bạn đang được lưỡi trong má ở đây, nhưng lệnh đó cho bạn thấy những gì: gv nào một khi bạn biết về nó. Nhưng nếu tôi không? Dạy một người đàn ông (wo) để câu cá và tất cả những điều đó. - Ben Thul
@ BenThul: Tôi nghĩ rằng tôi hiểu lầm câu hỏi. Tôi biết về nhiều tính năng của Vim đơn giản bằng cách đọc qua phần lớn tài liệu theo thời gian, bắt đầu bằng ":help". - Heptite
:help select-visual nên dẫn bạn đến hướng dẫn chính xác bên trong vim @skywinder. - nwildner


gv chắc chắn là phương pháp nhanh nhất (sử dụng lựa chọn cuối cùng), nhưng nếu bạn muốn một vùng lựa chọn đã lưu ổn định (hoặc một số), bạn luôn có thể tạo các macro.

Cho phép nói rằng tôi muốn lưu trữ một lựa chọn phương pháp hiện tại của tôi, mà đi từ dòng 25-35. Tôi có thể tạo macro chọn toàn bộ phương pháp bằng cách nhập

q    //start recording
a    //use register a
25G  //Go to line 25
V    //visual-line mode
35G  //Go to line 35
q    // stop recording

Sau đó tôi có thể lấy lại lựa chọn đó bằng cách nhập @a (chạy macro trong đăng ký a). Lặp lại với bất kỳ thanh ghi, dòng hoặc phần nào của dòng mà bạn muốn. Rõ ràng nếu bạn thực hiện thay đổi đối với tệp, lựa chọn có thể thay đổi, vì vậy, bạn có thể muốn xem xét sử dụng dấu thay vì mã số "mã hóa cứng".


11
2018-03-14 13:26



zmto nhập rằng bạn cần phải biết số dòng. Tôi nghĩ rằng nó tốt hơn để xác định hai nhãn hiệu và sau đó sử dụng: 'a', b để hoạt động trên phạm vi giữa chúng (hoặc thay thế 'với backticks nếu muốn granularity trong một dòng) - sillyMunky
Vâng, những điều số dòng là ngu ngốc - tôi chỉ sử dụng nó làm ví dụ cho cách tạo macro chọn. Sử dụng một loạt các nhãn hiệu là một ý tưởng thú vị mặc dù ... - AlexMA


gv hoạt động tốt để khôi phục lựa chọn cuối cùng. Nhưng đôi khi cần nhiều hơn một chút.

Nếu bạn cần bản ghi liên tục hơn, hãy xem plugin này chúng tôi hiện đang làm việc trên GitHub.

VisualMarks cho phép bạn lưu và khôi phục các khu vực được chọn trực quan giống như bạn lưu và đánh dấu các vị trí cụ thể trong tệp của mình m. Sau khi cài đặt và với các tùy chọn mặc định, hãy sử dụng:

ma

trong chế độ trực quan để lưu lựa chọn hiện tại của bạn để đánh dấu a, sau đó

<a

ở chế độ bình thường để quay lại lựa chọn này.


6
2017-10-18 17:39



Wow, nghe thật tuyệt. Tôi sẽ phải thử plugin đó! Bằng cách này, những VisualMarks có thể tồn tại với mkview như bạn có thể với các dấu hiệu? - labyrinth
@ labyrinth Tôi không biết mkview nhưng tôi đoán Vâng kể từ khi các nhãn hiệu được lưu trong một tập tin riêng biệt và .. Tôi đề nghị bạn thử anyway :) Nếu chúng không tồn tại như bạn muốn, chúng tôi sẽ vui lòng nhận được yêu cầu tính năng của bạn trên GitHub và try'da xử lý nó. - iago-lito


Giả sử tôi muốn thay thế Tạm biệt bằng Hello và mã bên dưới được chọn:

public static void main(String[] args){
    System.out.println("Goodbye World");
}

Tôi sẽ gõ :s/Goodbye/Hello/ và vim sẽ thay thế tất cả các phiên bản Goodbye với Hello

Nó chỉ đơn giản là sự kết hợp các biểu thức chính quy của vim và các lựa chọn chế độ trực quan. Khi bạn chọn, nó sẽ tự động điền '<,'>


0
2017-12-10 17:20



Xin lỗi, đó không phải là những gì tôi đã hỏi. Những gì tôi hỏi là làm thế nào để bạn tái sử dụng các lựa chọn để làm khác tìm và thay thế trên cùng một phạm vi như đã chọn trước đó? - labyrinth
Sau khi thay thế, bạn sẽ thoát khỏi chế độ trực quan. gõ vào gv và chế độ hình ảnh của bạn sẽ hoàn nguyên về trạng thái lựa chọn trước đó. - Scott Nguyen