Tôi không hiểu tại sao các lệnh này lại làm những việc khác nhau.Vim: thoát khỏi "thanh" nối các lệnh Ex
dán trong tập tin vimrc, kích hoạt bằng cách nhấn t
trong bình thường:
nnoremap t :call search('\m\(a\|b\)', 'W')<CR>
nnoremap t :call search('\m\(a\\|b\)', 'W')<CR>
Typed trực tiếp vào dòng lệnh:
:call search('\m\(a\|b\)', 'W')
:call search('\m\(a\\|b\)', 'W')
Để cụ thể: Các "dự định" hành vi đòi hỏi một \\|
trong Ví dụ nnoremap
, nhưng nó yêu cầu \|
trong ví dụ tìm kiếm call
.
Tôi biết rằng việc xử lý đặc biệt thanh (:help :bar
) là một trong những bẫy mà Vim đã đặt ra cho tôi, nhưng nó vẫn không có ý nghĩa. Các tài liệu rõ ràng nói "danh sách các lệnh này sẽ thấy thanh như là một phần của đối số của họ" nhưng không ai trong số những trường hợp ngoại lệ áp dụng ở đây. Tất cả các lệnh liên quan trong ví dụ này xử lý thanh như một ký tự meta ghép. Cũng trong tình huống này, thanh nằm bên trong một chuỗi và (tôi nghĩ?) Đang được phân tích cú pháp như là một phần của chuỗi được ưu tiên hơn cú pháp meta ghép.
Cảm ơn bạn đã xóa thanh toán này. Tôi chắc chắn đã bỏ qua cách các lệnh 'map' phải phân tích các đối số của chúng mà không cần nhìn vào nội dung của chúng. – Ein