Như @muru đã đề cập trong bình luận , bạn có thể sử dụng một lớp tương đương (được mô tả trong :help /[[
) dường như là một biểu thức lớp ký tự được đánh giá là một tập hợp các ký tự tương tự (nghĩa là giống nhau khi bạn xóa bất kỳ dấu / dấu phụ nào).
Ví dụ: để tìm kočička
và kocicka
với cùng một mẫu, bạn có thể sử dụng:
ko[[=c=]]i[[=c=]]ka
trong đó [[=c=]]
lớp tương đương cho c
nhân vật.
Để tự động chèn lớp ký tự này bất cứ khi nào bạn nhấn c
trong khi thực hiện tìm kiếm, bạn có thể sử dụng ánh xạ này:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
có thể được chia nhỏ như thế này:
<expr>
gõ đánh giá của một biểu thức
getcmdtype() =~ '[?/]'
kiểm tra xem bạn đang viết một tìm kiếm lạc hậu hay chuyển tiếp
'[[=c=]]'
trả về lớp tương đương cho c
ký tự nếu thử nghiệm trước đó thành công
'c'
trả lại c
nhân vật
Ánh xạ trước có 2 nhược điểm:
- nó chỉ bao gồm các
c
nhân vật
- nó có thể làm cho mẫu khó đọc
Nó có thể được cải thiện bằng cách ánh xạ lại <CR>
như thế này:
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Khi bạn nhấn <CR>
sau khi viết mẫu cho tìm kiếm, ánh xạ sẽ tự động thay thế tất cả các ký tự chữ cái bằng đối tác lớp tương đương của chúng.
Ánh xạ cho <CR>
tương tự như ánh xạ trước đó c
, ngoại trừ nó không sử dụng đối số <expr>
mà là ánh xạ hệ thống <C-\>e
.
<expr>
cho phép bạn chèn đánh giá của một biểu thức, trong khi <C-\>e
cho phép bạn thay thế toàn bộ dòng lệnh bằng việc đánh giá một biểu thức.
:h [[=
và:h patterns-composing
.