Vim'e arama yaparken aksanları / aksanları göz ardı etmek istediğimi söylemenin bir yolu var mı? Örneğin,
kočička
Girerek
/kocicka
ignorecaseVe smartcaseseçenekler çok faydalıdır, ancak diacritics / desenli ilgisi var görünmemektedir.
Vim'e arama yaparken aksanları / aksanları göz ardı etmek istediğimi söylemenin bir yolu var mı? Örneğin,
kočička
Girerek
/kocicka
ignorecaseVe smartcaseseçenekler çok faydalıdır, ancak diacritics / desenli ilgisi var görünmemektedir.
Yanıtlar:
@Muru de belirtildiği gibi açıklama , siz (açıklanan bir denklik sınıfını kullanabilirsiniz :help /[[benzer bir karakter kümesi olarak değerlendirilen bir karakter sınıfı ifadesi gibi görünüyor) (yani herhangi bir vurgu / aksan kaldırmak kez aynıdır).
Örneğin, aramaya kočičkave kocickaaynı desen, bu kullanabilirsiniz:
ko[[=c=]]i[[=c=]]ka
karakter [[=c=]]için eşdeğerlik sınıfı nerede c.
cBir arama yaparken vurduğunuzda bu karakter sınıfını otomatik olarak eklemek için bu eşlemeyi kullanabilirsiniz:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
ki şu şekilde parçalanabilir:
<expr> bir ifadenin değerlendirmesini yazıngetcmdtype() =~ '[?/]' geriye veya ileriye doğru arama yazıp yazmadığınızı test edin'[[=c=]]'cönceki test başarılı olursa karakter için eşdeğerlik sınıfını döndürür'c'ckarakteri başka türlü döndürmekÖnceki eşlemenin 2 dezavantajı vardır:
ckarakteri kaplarBu şekilde yeniden eşlenerek geliştirilebilir <CR>:
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Bir <CR>arama için bir desen yazdıktan sonra vurduğunuzda , eşleme tüm alfabetik karakterleri eşdeğerlik sınıfı karşılıklarına göre otomatik olarak değiştirir.
İçin eşleme , bağımsız değişkeni değil sistem eşlemesini kullanması dışında <CR>önceki eşlemesine benzer . bir ifadenin değerlendirmesini eklemenizi sağlarken , tüm komut satırını bir ifadenin değerlendirmesiyle değiştirmenizi sağlar.c<expr><C-\>e
<expr><C-\>e
/kočičkaeşleşmeler yerine, kocickakullanabilirsiniz . Alternatifler ve çok baytlı karakterlerle çalışmıyor gibi görünüyor; Ancak, (daha az emin olmama rağmen) işe yarıyor gibi görünüyor, ve kendi eşdeğerlik sınıfı (örneğin, ) de inşa sanırım . '[[:lower:][:upper:]]''\a''[:alpha:]''\I''[^[:punct:]]''[А-яЁё]'
:h [[=ve:h patterns-composing.