lyokha / vim-xkbswitch

vim plugin for automatic keyboard layout switching in insert mode
MIT License
481 stars 23 forks source link

Не работает на Ubuntu 16.04 #26

Closed james-bay closed 8 years ago

james-bay commented 8 years ago

Здравствуйте! На свежеустановленную Ubuntu 16.04 только поставил vim. Никаких плагинов для vim-а нет. Сделал все по инструкции, собрал xkb-switch, скопировал плагин в (~/.vim/plugin, ~/.vim/doc, ~/.vim/xkbswitch.tr). Прописал в ~/.vimrc следующее:

let g:XkbSwitchEnabled = 1 
let g:XkbSwitchLib = '/usr/lib/libxkbswitch.so' 
let g:XkbSwitchIMappings = ['ru']

И не работает. Попробовал:

$ xkb-switch -l 
us
ru

В vim-е переключается с русской на английскую:

:call libcall('/usr/lib/libxkbswitch.so', 'Xkb_Switch_setXkbLayout', 'us')

также:

:echo g:XkbSwitchEnabled
> 1

:echo g:XkbSwitchLib
> /usr/local/lib/libxkbswitch.so

:echo g:XkbSwitchIMappings
> ['ru']

:echo libcall('/usr/local/lib/libxkbswitch.so', 'Xkb_Switch_getXkbLayout', '')
> ru

Подскажите пожалуйста, что можно сделать?

lyokha commented 8 years ago

Добрый день. Говорят в поледних Убунтах есть проблема c самим xkb-switch, см. этот баг. Проверьте, может ли xkb-switch переключать раскладки сам:

xkb-switch -s ru
xkb-switch -s en

Если не сработает, то надо добиваться починки xkb-switch для Убунту.

james-bay commented 8 years ago

Спасибо за ответ!

xkb-switch -s ru
xkb-switch -s us

сработал, всё переключается

lyokha commented 8 years ago

В ваших настройках

let g:XkbSwitchLib = '/usr/lib/libxkbswitch.so'

а echo говорит /usr/local/lib/libxkbswitch.so. Это странно.

lyokha commented 8 years ago

И кстати, что не работает? Можете описать свои действия?

james-bay commented 8 years ago

libxkbswitch.so скопировал в /usr/local/lib поэтому в двух местах. Но если из/usr/local/lib удалить, то ничего не изменится. Собственно уже удалил. Действия простые. Я уставноил все по инструкции в выше описанные директории (если не считать, что засунул libxkbswitch.so в /usr/local/lib), vim без плагинов, только поставил его. Запускаю в En раскладке, курсор двигается, в Normal mode двоеточием перехожу. Если включаю русскую расскладку (у меня Caps Lock) то, курсор можно двигать только стрелками, двоеточие ненажимается, ну т.д.

lyokha commented 8 years ago

Ага, понятно. Этот плагин не рассчитан на то, что вы описываете. Его главная задача - восстанавливать раскладку, которая была в режиме ввода раньше, при новом входе в режим ввода (а также режиме Select). Перевод маппингов работает также исключительно для режима ввода.

james-bay commented 8 years ago

Ох, значит я недопонял. Прошу прощения. Третий день на linux всего. Спасибо что уделили мне время!

lyokha commented 8 years ago

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

Кстати, добавьте еще это:

let g:XkbSwitchNLayout = 'us'

для полной гарантии, что вы не окажетесь в не английской раскладке после выхода из режима ввода.

james-bay commented 8 years ago

Спасибо большое! Все ясно стало. Еще один вопрос, если можно. Запускаю vim и все работает как нужно. Выхожу из режима вставки, раскладка восстанавливается, но в vimtutor это не работает. Так и должно быть? vimtutor же просто запускает vim с открытым временным файлом урока.

lyokha commented 8 years ago

Действительно, не работает. Сейчас гляну. Никогда не пользовался vimtutor, если честно.

lyokha commented 8 years ago

Ага, vimtutor - это shell скрипт, у меня он находится в директории /usr/bin/, последние его две строки говорят:

# Start vim without any .vimrc, set 'nocompatible'
$VIM -f -u NONE -c "set nocp" $TUTORCOPY

Соответственно, не загружаются ни .vimrc, ни какие-либо плагины. Если вы хотите использовать vimtutor со всеми плагинами, то замените последнюю строку на

$VIM -f $TUTORCOPY
lyokha commented 8 years ago

для загрузки только одного xkbswitch в vimtutor можно последнюю строку заменить на

$VIM -f -u NONE -c "set nocp" -c "let g:XkbSwitchEnabled = 1" -c "runtime! plugin/xkbswitch.vim" -c "EnableXkbSwitch" $TUTORCOPY

У меня это сработало, по желанию можно и другие настройки добавить через опцию -c, или создать файл, например xkbswitch-settings.vim в директории plugin/ c вашими настройками

let g:XkbSwitchEnabled = 1 
let g:XkbSwitchLib = '/usr/lib/libxkbswitch.so' 
let g:XkbSwitchIMappings = ['ru']

а последнюю строку превратить в

$VIM -f -u NONE -c "set nocp" -c "runtime! plugin/xkbswitch-settings.vim" -c "runtime! plugin/xkbswitch.vim" -c "EnableXkbSwitch" $TUTORCOPY
james-bay commented 8 years ago

Большое спасибо вам! Очень благодарен за помощь и советы! Очень мне не ловко, что открыл Issue и время у вас отнял много. Еще раз прошу прощения за это и еще раз от души спасибо вам

lyokha commented 8 years ago

Да всё нормально! Открытие тикета на гитхабе - самый естественный способ задать вопрос :)