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

Рубрика "Секреты Вим". Работа без переключения на латиницу

Привет, коллеги! Ситуация, конечно, нечастая, но возможность в Вим предусмотрена и надо о ней знать, а уж когда пригодится, тогда и вспомним.

Вот нет у вас, допустим, латинской раскладки вообще: только русская, например. При этом Вим вы запустить как-то можете. Или латиница есть, но кривая какая-нибудь. Ну, или латиница есть, но вы не хотите на нее переходить. В самом деле: вы пишете по-русски, и зачем вам переключаться на латиницу в нормальном режиме? Неудобно.

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

Это какая-то липовая азбука, не знаю кем придуманная. Картинка не имеет отношения к тексту заметки и не призвана ни задевать чьи-либо чувства, ни рекламировать что бы то ни было.
Это какая-то липовая азбука, не знаю кем придуманная. Картинка не имеет отношения к тексту заметки и не призвана ни задевать чьи-либо чувства, ни рекламировать что бы то ни было.

Да, вы можете настроить таблицу соответствий keymap, причем они есть готовые, так что это делается в одну команду. Тогда можно работать все время в системной латинице, а Вим в режиме вставки сам будет переводить символы латиницы в то, что вы имели в виду. Например, s в ы. Это мы уже обсуждали, причем неоднократно.

А можно и наоборот: работать все время в кириллической, скажем, раскладке. А Вим пусть переводит кириллические символы в то, что вы имеете в виду. Например, Жы в :s

Это можно. Для этого есть опция langmap.

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

фaыsвd,йцукенг;qwertyu,zZяЯ

Сначала мы отображаем 'ф' в 'a', 'ы' в 's' и 'в' в 'd'. Потом символы йцукенг в qwertyu, соответственно; наконец, еще две пары: z в Z и я в Я.

Если вам надо отобразить запятую, точку с запятой и слеш, то экранируйте их слешем: б\,;\;$

Отображение символов будет работать в нормальном режиме, при обращении к регистрам в режиме вставки (через <C-R>), при отработке привязок (горячих клавиш) в режиме вставки.

Но оно не будет работать в режиме командной строки, что, конечно, не очень хорошо.

Полезно выставить флаг langnoremap, чтобы не ломались уже сделанные привязки.

Вот значение для русского языка:

:set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz

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

Научно-популярные каналы на Дзене: путеводитель
Новости популярной науки12 марта 2022