[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

case insensitive completion in zsh



Всем привет.

Хочу сделать регистронезависимое дополнение в zhs и для русского в том
числе.

В мане предлагается вариант:
zstyle ':completion:*' matcher-list '+m:{a-zA-Z}={A-Za-z}
но аналог с русским:
zstyle ':completion:*' matcher-list '+m:{а-яА-Я}={А-Яа-я}
уже не работает
не работает также и такой вариант:
zstyle ':completion:*' matcher-list
'm:{абвгдеёжзийклмнопрстуфхцчшщъыьэюя}={АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ}'
даже 'm:{я}={Я}' не работает для буквы я, хотя 'm:{z}={Z}' работает для z

зато работает вот так:
zstyle ':completion:*' matcher-list '+m:{a-zA-Z}={A-Za-z}' '+m:а=А'
'+m:б=Б' '+m:в=В' '+m:г=Г' '+m:д=Д' '+m:е=Е' '+m:ё=Ё' '+m:ж=Ж' '+m:з=З'
'+m:и=И' '+m:й=Й' '+m:к=К' '+m:л=Л' '+m:м=М' '+m:н=Н' '+m:о=О' '+m:п=П'
'+m:р=Р' '+m:с=С' '+m:т=Т' '+m:у=У' '+m:ф=Ф' '+m:х=Х' '+m:ц=Ц' '+m:ч=Ч'
'+m:ш=Ш' '+m:щ=Щ' '+m:ъ=Ъ' '+m:ы=Ы' '+m:ь=Ь' '+m:э=Э' '+m:ю=Ю' '+m:я=Я'
'+m:А=а' '+m:Б=б' '+m:В=в' '+m:Г=г' '+m:Д=д' '+m:Е=е' '+m:Ё=ё' '+m:Ж=ж'
'+m:З=з' '+m:И=и' '+m:Й=й' '+m:К=к' '+m:Л=л' '+m:М=м' '+m:Н=н' '+m:О=о'
'+m:П=п' '+m:Р=р' '+m:С=с' '+m:Т=т' '+m:У=у' '+m:Ф=ф' '+m:Х=х' '+m:Ц=ц'
'+m:Ч=ч' '+m:Ш=ш' '+m:Щ=щ' '+m:Ъ=ъ' '+m:Ы=ы' '+m:Ь=ь' '+m:Э=э' '+m:Ю=ю'
'+m:Я=я'

но это уж как-то больно через жопу.

это при том, что zsh умеет ловер и апперкейсить русские буквы:
% qwe=йцу
% echo ${(U)qwe}
ЙЦУ
% echo ${(L)${(U)qwe}}
йцу

а в EXTENDED_GLOB есть Globbing Flag i который удачно работает и для
русского.

% setopt EXTENDED_GLOB
% ls  (#i)йцу
ЙцУ ЙЦУ

но это немного не то..

кстати чего-нить для переключения ригистра в zsh я не нашёл. его и нету
или я слепой?


-- 
sergio


Reply to: