Найти тему
Блокнот математика

Рубрика "Секреты Вим". Ввод юникодного текста

Привет, коллеги. В прошлой заметке мы обсудили способы ввода юникода, а теперь подробнее обсудим таблицы символов. О них был материал, но сейчас разберемся подробнее.

Таблица задает соответствие символа на клавиатуре юникодному символу. Или последовательности символов, например, 'e в é или no в の. Вы можете создать свою таблицу или использовать готовую. Они хранятся в файлах, стандартные в $VIMRUNTIME/keymap/. Вы задаете такой файл (можно без расширения и без пути) в опции keymap. И тогда можно включить преобразование символов латиницы (стандартной клавиатуры) в то, что указано в таблице. Включение производится комбинацией <C-^>, обычно это <C-6>. По сути, это просто привязки, только создаваемые автоматически и включаемые только когда вам надо. Их можно даже посмотреть командой :lmap.

Если вы работаете с одним алфавитом, кроме латиницы, то просто пропишите в .vimrc

set keymap=russian-jcukenwin

И получите по <C-^> русскую ЙЦУКЕН-раскладку. Или задавайте в эту переменную одну из описанных ниже таблиц и пишите по-белорусски, на иврите, по-японски слоговыми азбуками, или на каком-то другом языке.

Что у нас есть? Скажу за себя. У меня в указанной папке, в числе прочего, имеются:

accents.vim: буквы латиницы со всевозможными акцентами и прочей диакритикой. Очень приятно оказалось для меня, любителя итальянcкого.

Две раскладки для арабского для разных кодировок.

Беларусская.

Раскладки Дворака, латиница и русская. Они эффективнее QWERTY и ЙЦУКЕН, но приживается не всегда то, что эффективнее: это известно как "эффект QWERTY".

Эсперанто.

Пять греческих раскладок для разных кодировок.

Восемь раскладок для иврита: по четыре кодировки для фонетической и натурной раскладки. И в них доступно очень много символов, помимо просто букв, потому что огласовки.

Раскладка для японских кан: хираганы и катаканы. Да, я прямо вот сейчас могу писать по-японски (но каной, без кандзи)! Но не знаю японского.

Китайский пиньинь. Это латиница для записи китайского языка. Там (в раскладке) только гласные с обозначением тонов.

Литовский, венгерский, монгольский. Два персидских. Польский, болгарский, словакский и сербский в разных кодировках.

Русский: Дворак, ЙЦУКЕН, ЙЦУКЕН-win, ЙЦУКЕН-wintype (раскладка печатающих машинок), ЯВЕРТИ. Выбирайте.

Тамил, вьетнамский. Украинский Дворак и ЙЦУКЕН.

И еще несколько, но я о таких языках даже не слышал.

В некоторых таблицах сравнительно мало символов, в каких-то очень много (иврит со всеми огласовками, включая какие-то, которых я не знаю; японских символов помимо стандартных кан тоже полно).

Далее все зависит от вас.

Почему нету итальянской — я догадываюсь: у них нет нужды в другой раскладке, их алфавит полностью перекрывает английский. То же, видимо, относится к немцам, французам, шведам и финнам: их тоже нет. Но почему-то НЕ относится к полякам, словакам, венграм, литовцам: они есть... Есть канадская многоязычная клавиатура — видимо, тот еще винегрет. И почему-то нет армянского и грузинского алфавитов; есть Шри-Ланка, но нет Индии. Непонятно...

Как создать свою таблицу, чтобы писать на тенгваре (от E000 до E07F, только не во всех шрифтах оно есть), собрать себе итальянскую или шведскую раскладку или, скажем, просто удобную раскладку с часто используемыми символами? Например, чтобы писать по-русски о бридже, удобно масти закодировать и кое-что еще. Или если вам активно нужны римские цифры, то лучше использовать что-то вроде Ⅻ.

К тому же, вы можете не только символы кодировать...

Комментарии начинаются, как обычно, с двойной кавычки, и в начале стоит написать о себе, дату, что за язык и все такое. Можно задать короткое имя раскладки: let b:keymap_name='xxx'

Далее идет слово loadkeymap, а за ним пары: что нажмем и что получим. На скриншотах фрагменты таблиц для русской раскладки и для японской каны.

Как видим, не обязательно, чтобы слева стоял один символ: может быть и последовательность, как и в команде map. Если алфавит обширный или много вариантов, то иначе и никак. Только если вы задали пару 'e é, то задайте также и '' ', чтобы иметь возможность ввести апостроф без запинок.

После пары символов может идти комментарий.

В первом столбце могут идти и спецклавиши в формате <C-Q> или <F2>.

Во втором столбце тоже можно ставить не символ, а несколько. Но если такое у вас одноразово, то лучше map и использовать, а если много, то клавиш не хватит...

Зато можно указывать символы разными способами. Непосредственно, вводите как хотите (см. выше). Кодом, в формате <char-666> (ÿ), причем число может быть десятичным, восьмеричным (0666) или шестнадцатеричным (0x666).

Вот пример задания символа по коду (из таблицы для sinhala):

q <char-0x0d8d> " ඍ - iruyanna (iru)

Свои таблицы лучше класть в локальную папочку, но чтобы она была в списке путей runtimepath. Например, ~/.vim/keymap

Удачи, коллеги!

Оглавление рубрики

Путеводитель по каналу