Tôi muốn tìm một dòng có cả 'foo' và 'bar' theo thứ tự này nhưng không nhất thiết phải cạnh nhau.Làm cách nào để tìm kiếm trong vim cho một dòng có 2 từ cụ thể?
Tôi đã thử các sau đây và nó đã không làm việc:
/foo.*bar
Tôi muốn tìm một dòng có cả 'foo' và 'bar' theo thứ tự này nhưng không nhất thiết phải cạnh nhau.Làm cách nào để tìm kiếm trong vim cho một dòng có 2 từ cụ thể?
Tôi đã thử các sau đây và nó đã không làm việc:
/foo.*bar
Sử dụng:
:set magic
/foo.*bar
Thiết lập 'ma thuật' xác định cách VIM xử lý các ký tự đặc biệt trong các biểu thức chính quy. Khi nó tắt VIM xử lý tất cả các ký tự theo nghĩa đen, có nghĩa là biểu thức bạn đã viết foo.*bar
sẽ thực sự tìm kiếm chuỗi đó. Tuy nhiên, khi 'ma thuật' được bật thì các ký tự regex đặc biệt có ý nghĩa đặc biệt của chúng và nó hoạt động giống như bạn mong đợi. Bạn nên luôn sử dụng :set magic
trừ khi xử lý các tập lệnh Vi thực sự cũ, vì vậy chỉ cần thêm nó vào vimrc của bạn và bạn sẽ được thiết lập.
Tôi khá chắc chắn đây là một mặc định hiện nay (ít nhất là vim của tôi trên cửa sổ). –
Tôi đồng ý, nó cũng là mặc định, nhưng tôi không biết tại sao nó không được đặt cho Sasha - có lẽ anh ấy đang sử dụng một phiên bản cũ hơn hoặc gọi vi thay vì vim. – spatz
trình cho tôi:
/text.*text2
Làm việc cho tôi cũng như –
Ditto; không phân biệt chữ hoa chữ thường: /FOO.*BAR\c –
Thật không may "làm việc cho tôi" không đưa ra lý do tại sao hoặc có khả năng gây ra (s). – crw
Ngoài ra còn có một plugin tuyệt vời để một làm tìm kiếm Boolean trong vim:
Có lẽ vấn đề của bạn là 'ma thuật' thiết lập. Đọc: giúp 'ma thuật' và: đặt ma thuật? để xem đó có phải là vấn đề không. – spatz
đó là ... ma thuật là gì? –