xkbswitch intro useless picture #1 Бремя белого человека «Приём Сиамских послов императом Наполеоном III» Жан Леон Жером .

TL;DR: репозиторий плагина nvim, для его работы нужно чтобы в вашей системе была библиотека, которая умеет переключать раскладку для Mac, для Linux, настраивать там ничего не надо. Плагин делает всё сам: при включении режима Insert в neovim включается та раскладка, которая была в режиме Insert, при выходе в режим Normal, всегда включается English US.

“Why, how call you those grunting brutes running about on their four legs?” demanded Wamba. “Swine, fool, swine,” said the herd, “every fool knows that.” “And swine is good Saxon,” said the Jester; “but how call you the sow when she is flayed, and drawn, and quartered, and hung up by the heels, like a traitor?” “Pork,” answered the swine-herd. “I am very glad every fool knows that too,” said Wamba, “and pork, I think, is good Norman-French; and so when the brute lives, and is in the charge of a Saxon slave, she goes by her Saxon name; but becomes a Norman, and is called pork, when she is carried to the Castle-hall to feast among the nobles; what dost thou think of this, friend Gurth, ha?” “It is but too true doctrine, friend Wamba, however it got into thy fool’s pate.”

Это Айвенго, если что. Вот по-русски.

Лингвистическая привилегия и цифровая пытка

Target Audience: Vim/Nvim users of all levels who have ever typed :wq and gotten :цй instead. Tone: Ironic, relatable, a bit dramatic about first-world problems.

Половина населения Земли — функциональные билингвы, однако, видимо, не правильная половина — те, кто изобрёл компьютеры и сделал их популярными во всём мире, принадлежали к моноязычной культуре. Конечно, у нас сейчас есть повсеместная поддержка Unicode, шрифты, операционные системы и браузеры. И нам не надо уже делать на сайтах версии страниц в разных кодировках. Прогресс на лицо. Да, но…

xkbswitch intro useless picture #2 В мире 2 универсальных языка – английский и громкий медленный английский.

Глубоко внутри все компьютеры исключительно цифровые (аналоговые вычислители тоже есть, но никто из нас их компьютерами не называет, а многие и в глаза их не видели). Следующим слоем за единичками и нулями идёт шестнадцатиричный код, а вслед за ним — ASCII.

Да, я знаю что всё сложнее, но ASCII — это 1961 год и у меня нет никакого желания копать ещё глубже.

Так воот. Язык взаимодействия человека с машиной и машин между собой стремится к наиболее низкому, приближенному к «железу» уровню, (низкому, имеется в виду, более понятному железному брату по разуму), даже если мы говорим о языках типа Python и Javascript, они всё равно, отличаются от человеческого языка сильнее чем письменная речь от устной. И так получилось, что индийская, китайская и арабская цивилизации дали миру понятие ноля, десятичные системы счисления и понятную нам запись алгебраических выражений, а англоговорящая цивилизация дала нам ткатские станки, программируемые перфокартами, табуляторы и, спустя десятки лет, красивые и удобные ноутбуки, телефоны, Apple/Android TV, и прочие холодильники с подключением к интернету. В основе всего этого жужжащего и мигающего шума лежат нолики и единички, тем не менее, программируется это в 99.99999% случаев на языках, основанных на латинице (0.00001% оставим, например, «1С» и другим Domain Specific Languages). Школьная математика — и та широко использует латинские буквы, что уж говорить о символической логике.

Человечество вынужденно тянет за собой все эволюционные формы текстовых интерфейсов, подобно тому как млекопитающие проходят в своём развитии стадии, напоминающие морфологию рыб и земноводных. Но, в отличие от эмбриогенеза живых существ, ступени развития технологий работают в компьютерах параллельно, текстовые интерфейсы представлены в мире современного IT не только в виде рудиментов, а, скорее в виде полноценных, хоть и глубоко залегающих пластов обмена информацией и командами. Русскоговорящая «Алиса» под капотом представляет собой море разливанное англоязычных (скорее, латиноязычных) символов: текстов программ, json-файлов, конфигов, тестов и записей в базах данных.

И всё потому, что создатели современных технологий и мечтать не могли, что на основе их наработок вырастет такой Вавилон. Золотой миллиард (золотые пятьсот миллионов, скорее) пользуются своим английским и искренне недоумевают зачем Apple добавила кнопку с изображением глобуса на клавиатуру.

Смена режимов

The Descent into Madness A Use-Case Catalogue

Это данность, нам нужно адаптироваться в этом мире, поскольку наш кругозор на столько же шире, насколько больше активных раскладок клавиатуры в наших операционных системах (а вы как думали, зачем ещё появились вездесущие эмодзи). Человечество штурмует эту задачу с самого момента появления персональных компьютеров, а может, и дольше. Сегодня я хочу рассказать о маленьком следствии этой проблемы и о решении, которое я нашёл для себя. Тысячу лет назад, когда мы жили в пещерах и подсчитывали количество птеродактилей на компьютерах на базе Windows XP, была программа Punto Switcher, которая классно справлялась с переключением раскладки с русского на английский. Было удобно. Земля продолжила летать вокруг солнца, менялись компьютеры, операционные системы, задачи и люди. И вот я уже с лишним весом и залысинами обнаруживаю себя в эмуляторе терминала, работающим в текстовом редакторе, история которого уходит в 1996 год и далее через калейдоскопическую воронку культуры семидесятых в эпоху хиппи, музыку Pink Floyd и Jimi Hendrix… Классно, причастность, до тех пор пока не понимаешь, что каждый раз после нажатия ты судорожно хватаешься за переключатель раскладки, ибо не понимает твой редактор :цй вместо :wq.

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

Всё придумано до нас

Чтобы Neovim стал приятным в работе с несколькими раскладками клавиатуры, не достаточно одной только ностальгии по Punto Switcher, нужно что-то делать. И вот что: надо убедить nvim что при выходе из режима Insert, всегда включается английская раскладка, а при возврахщении в режим вставки — та раскладка, которая там была до этого. Не руками же переключать, кто-то же явно справился с этой задачей. Вот вам xkbswitch. Репозиторий наставьте там звёзд, чтобы у автора в глазах рябило. Порядок установки тривиален, настраивать ничего не нужно. Нужно понимать что сам плагин не меняет раскладку, а просит специальную библиотеку поменять раскладку. Библиотека для Mac, для Linux.

One more thing

The Incantation (Using your plugin manager of choice, as long as it’s lazy.nvim): A simple, clean code block showing how to install it.

Если вы, подобно мне, преисполнились и раскатываете одинаковый конфиг nvim по вашим серверам, то для отключения плагина можно вычислять значение поля enabled в конфиге (тогда в линукс-среде, при неустановленной библиотеке-переключателе раскладки, неовим не будет ныть, что библиотеки такой-то нет и у него лапки).

Спасибо что прочитали, можно скопипастить вот эту штуку и положить в ~/.config/nvim/lua/plugins/xkbswitch.lua

return {
    'ivanesmantovich/xkbswitch.nvim',
    enabled = (jit.os ~= "Linux"),
    config = function()
        require('xkbswitch').setup()
    end,
}