Les utilisateurs de langue anglaise n'ont probablement pas ce problème, mais vim est assez stupide en ce qui concerne les expressions régulières. Dans mon cas, la plupart des lettres de l'alphabet turc en dehors de l'alphabet EN ne semblent pas être qualifiées de caractères de mot.
Étant donné un document qui contient un mot turc:
gerçekleşiyor
L'expression de recherche
/ger\wek
… Ne correspondra pas au début du mot. Pour une raison quelconque, ç n'est pas un caractère de mot.
Cela devient exaspérant lorsque les plugins sont utilisés \w
dans le cadre de leur répertoire d'expression régulière. Un exemple typique est neocompcache
(que j'utilise au lieu de neocomplete
parce qu'il est compatible avec Neovim). À l'exception des jeux de règles de correspondance supplémentaires pour une syntaxe de langue, la saisie semi-automatique ne se produit que dans des blocs de taille de mot. Lorsque j'écris de grandes quantités de prose turque, il serait en fait pratique d'avoir une saisie semi-automatique fonctionnelle, mais avec la plupart des mots étant divisés en petits morceaux avec les caractères turcs laissés de côté, cela est au-delà de l'inutilité.
Comment puis-je convaincre vim (de préférence neovim si cela est important) d'accepter une plus grande gamme de caractères en tant que caractères "word"?
utf-8
dans tous les domaines . Et oui, il est défini dans ces deux paramètres.Réponses:
\w
est explicitement raccourci pour[0-9A-Za-z_]
. Utilisez-le à la\k
place si vous souhaitez faire correspondre les caractères Unicode en dehors de cette plage. Par exemple,/ger\kek
correspondgerçekleşiyor
.Soit dit en passant, neocomplete en est conscient mais ne l' utilise pas intentionnellement
\k
(par défaut) en raison de problèmes de performances. Vous pouvez modifier leg:neocomplete#keyword_patterns
paramètre de neocomplete . Voir également:https://github.com/Shougo/neocomplete.vim/issues/207
la source
Il semble qu'il n'y ait pas de moyen facile de redéfinir
\w
. Voir, par exemple, les expressions régulières Vim regex correspondent à des non-mots et correspondent à des mots contenant des caractères au-delà de a-zA-Z .Cependant, vous pourriez être en mesure d'utiliser une gamme personnalisée si vous ne me dérange pas retaper régulièrement (ha):
[a-zA-Z\%u00c7-\%u015f]
. Cela correspondra malheureusement à de nombreux caractères non turcs également, mais si ces caractères n'apparaissent pas dans votre texte, cela pourrait être OK.la source
\w
et donc ils tombent tous en ce qui concerne cela. Plutôt que de patcher tous les jours (si je peux même retrouver les coupables), il serait plus facile pour moi de patcher vim pour que ça\w
marche. Bah.