Closed abcdw closed 7 years ago
Попробовал у себя et g:XkbSwitchILayout = 'de' let g:XkbSwitchNLayout = 'de' Работает правильно. Вполне возможно, что я не понял, что у вас за проблема, опишите ее более развернуто
let g:XkbSwitchIMappingsSkipFt = ['tex']
let g:XkbSwitchEnabled = 1
"let g:XkbSwitchLib = '~/.vim/bundle/vim-xkbswitch/xkb-switch/libxkbswitch.so'
let g:XkbSwitchIMappings = ['ru']
let g:XkbSwitchNLayout = 'us(dvp)'
let g:XkbSwitchILayout = 'us(dvp)'
Пишу в инсерт моде текст на русском, выхожу в нормал мод расскладка меняется на us(dvp), перехожу в инсерт мод и расскладка меняется на ru(typewriter). Если поменять последние строчки местами, то наоборот "запоминается" расскладка в нормал моде, а расскладка в инсерт моде всегда по-умолчанию us(dvp). Хотелось бы чтобы при переходе в любой режим расскладка менялась на us(dvp).
Пишу в инсерт моде текст на русском, выхожу в нормал мод расскладка меняется на us(dvp), перехожу в инсерт мод и расскладка меняется на ru(typewriter).
Раскладка, которая была в режиме ввода возвращается, когда вы снова переходите в режим ввода - в этом смысл плагина. Так что я здесь не вижу никакого противоречия.
Если поменять последние строчки местами, то наоборот "запоминается" расскладка в нормал моде, а расскладка в инсерт моде всегда по-умолчанию us(dvp).
Я вообще не представляю, как порядок объявления глобальных переменных может влиять на поведение плагина.
Вот описание поведения плагина при установке этих переменных из документации:
5.2 Default layouts~
By default last Normal mode keyboard layout is restored when leaving Insert mode, but you can specify to use particular layout for that:
let g:XkbSwitchNLayout = 'us'
< Also you can specify original Insert mode keyboard layout:
let g:XkbSwitchILayout = 'us'
<
Из него следует, что смысл этих переменных различен, в частности g:XkbSwitchNLayout определяет безусловное изменение раскладки при выходе из режима ввода (т.е. Вы всегда получите us(dvp) при выходе в нормальный режим), переменная g:XkbSwitchILayout устанавливает язык по умолчанию, который включится при первом входе в режим ввода в данном буфере, если в процессе редактирования вы поменяли раскладку (например, на русский язык), то при повторном входе в режим ввода язык переключится на русский - это by design!
Хотелось бы чтобы при переходе в любой режим расскладка менялась на us(dvp)
Такой фичи нет, и если честно, я не понимаю, зачем она нужна, ведь если рассматривать режим ввода как непрерывный поток редактирования, то странно, что при врЕменных прерываниях его выходом в нормальный режим vim, текущая раскладка ввода будет каждый раз восстанавливаться, несмотря на то, что она была сознательно изменена раньше.
Если вам действительно нужна такая фича, то я могу подумать, как ее реализовать, хотя это нарушает главную идею плагина.
Все-таки я добавил безусловную раскладку в Insert mode как фикс для проблемы #24. Оказывается, эта фича востребована! Смотрите обновление секции Default layouts в README.
При установке этих переменных одновременно работает, только первая из установленных. let g:XkbSwitchILayout = 'us(dvp)' let g:XkbSwitchNLayout = 'us(dvp)'