vim-xkbswitch icon indicating copy to clipboard operation
vim-xkbswitch copied to clipboard

не получается заставить работать на Mac OS 10.10.2

Open ghost355 opened this issue 9 years ago • 35 comments

установил Input Source Switcher - проверил, работает - issw в терминале переключает язык. прописал в .vimrc let g:XkbSwitchEnabled = 1 let g:XkbSwitchLib = '/usr/local/lib/libInputSourceSwitcher.dylib'

запустил vim - не работает авто переключение на US раскладку. Из всех протестированных вариантов сработало только let g:XkbSwitchILayout = 'ru' При входе в vim в инсерт режим - включался русский, при выходе по Esc включался английский, при входе обратно в инсерт - опять русский. Убираю эту строчку, и ничего не работает - автопереключение не срабатывает.

если оставляю вышесказанную строчку и добавляю let g:XkbSwitchNLayout = 'us' то при переключении в инсерт - русский переключается, и при выходе остается. Если включить принудительно английский, то при следующем заходе в инсерт на русский уже не переключается.

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

Спасибо.

ghost355 avatar Mar 19 '15 07:03 ghost355

Я, к сожалению, вряд ли смогу вам помочь, у меня нет мака и я не смогу все это проверить. Попробуйте обратиться к автору http://github.com/vovkasm/input-source-switcher

lyokha avatar Mar 19 '15 09:03 lyokha

Спасибо. Так вроде input-source-switcher как раз таки и работает :)

Отправлено с iPhone

19 марта 2015 г., в 12:57, Alexey Radkov [email protected] написал(а):

Я, к сожалению, вряд ли смогу вам помочь, у меня нет мака и я не смогу все это проверить. Попробуйте обратиться к автору http://github.com/vovkasm/input-source-switcher

— Reply to this email directly or view it on GitHub.

ghost355 avatar Mar 19 '15 10:03 ghost355

Я понимаю, но может он что-нибудь подскажет, я то не могу это воспроизвести.

lyokha avatar Mar 19 '15 10:03 lyokha

Мне тоже интересно, если получится заставить работать под маком, то отпишитесь пожалуйста как.

abcdw avatar Mar 19 '15 15:03 abcdw

@ghost355 проверьте также, что issw не просто правильно переключает раскладку, но и правильно репортит текущую

lyokha avatar Mar 19 '15 15:03 lyokha

Взял у @myshov xkbswitch скомпиленный под мак и положил в /usr/local/bin/ Все работает.

abcdw avatar Mar 19 '15 15:03 abcdw

Круто, может тогда его реализацию упомянуть в доке? Я в этой ситуации действую вслепую - у меня не на чем проверить реализации, поэтому приходится доверять авторам.

lyokha avatar Mar 19 '15 15:03 lyokha

Давайте, если автор в ближайшие пару дней не откликнется, то форкну его репозитории, допишу нормальное README и отпишусь в местное README.

abcdw avatar Mar 19 '15 15:03 abcdw

Кстати, его сишный интерфейс надо будет поправить: он течет из-за malloc(). Там вполне статического буфера хватит.

lyokha avatar Mar 19 '15 16:03 lyokha

спасибо, xkbswitch нормально работает- потестирую в процессе работы, пока основную задачу выполняет единственно, переключение не моментально, а слегка задержка, причем при вход в инсерт моментально, а при выходе по Esc - задержка почти секунда

ghost355 avatar Mar 20 '15 08:03 ghost355

@ghost355 Возможно это задержка отрисовки в трее, у меня тоже как бы медленно переключает в linux/xneur - флаг перерисовывается через почти секунду, а на самом деле переключение раскладки происходит мгновенно

lyokha avatar Mar 21 '15 09:03 lyokha

@lyokha проверил если сразу после Esc нажать команду то первое нажатие не срабатывает, только второе, ну или чуть подождать.. есть какая то пауза, это не критично, но при быстрой работе может и будет раздражать, пока вроде все ок

ghost355 avatar Mar 21 '15 17:03 ghost355

а как-то можно заставить работать, например для замены - клавиши 'r' - при этом же режим Insert не включается?

ghost355 avatar Mar 21 '15 17:03 ghost355

Почему то был уверен, что создал ишью на эту тему. Да, было бы очень круто, если в Replace mode расскалдка была как и в insert mode. Но давайте обсуждение этого все же вынесем в отдельное ишью.

abcdw avatar Mar 22 '15 00:03 abcdw

Режим Replace Mode (который включается большой R) поддерживается, замена символов, которая включается маленькой r - нет. Во втором случае трудно поймать соответствующее событие: если переходы между Insert / Normal / Replace режимами являются событиями с точки зрения API vim, то включение замены символа - нет. Причем, с помощью маппинга еще можно заставить язык переключиться после нажатия r, а вот как вернуть его обратно после введенной замены - неясно.

lyokha avatar Mar 22 '15 08:03 lyokha

@ghost355 Может у вас какой-нибудь insert mapping установлен, начинающийся с <Esc> или, что то же самое, с <C-[>, проверить это можно введя команду :imap <Esc>. Если это действительно так, то у вас будет задержка выхода из режима ввода вообще (а не только переключения раскладки), равная timeoutlen (по умолчанию одна секунда, см. :help timeoutlen). И, если это так, то вам лучше избавиться от такого маппинга, он вреден сам по себе.

lyokha avatar Mar 22 '15 08:03 lyokha

:map сообщает- "no imap found'

ghost355 avatar Mar 28 '15 09:03 ghost355

У меня не работает только под терминальной версией vim, c MacVim все переключается. MacVim устанавливал через Homebrew с ключем --override-system-vim Так же заметил что issw выдает разные id для раскладки Programmer Dvorak. Проблема описана здесь

vbauerster avatar May 16 '15 17:05 vbauerster

@ghost355 Задержка с Escape может быть из-за tmux'a. Вот решение: set -s escape-time 0

@wbauer Попробуй https://github.com/myshov/libxkbswitch-macosx работает вроде неплохо.

abcdw avatar May 16 '15 17:05 abcdw

Да с Xkbswitch-macosx все работает!

vbauerster avatar May 16 '15 18:05 vbauerster

Предлагаю Лёхе упомянуть об альтернативе в README.

vbauerster avatar May 16 '15 18:05 vbauerster

@wbauer Я уже предлагал сделать ссылку на эту реализацию, только ребята собирались его немного улучшить (устранить утечки памяти и т.п.), пока от них нет вестей. В любом случае я сделаю это, если решение действительно рабочее, и, похоже, это действительно так.

lyokha avatar May 16 '15 20:05 lyokha

@wbauer Пофиксил интерфейс. Проверил работает в vim 7.4.712, Mac OS X 10.10. Советую обновиться :) @lyokha В моей реализации, конечно, есть что улучшить, например, вынести проект в brew и перейти на cmake, но так как и без этого все ок можно уже добавлять в Readme. Все улучшения это по сути usability features так сказать ими займусь позже :)

myshov avatar May 17 '15 15:05 myshov

@myshov Ок, тогда я добавлю ссылку на твою реализацию сегодня-завтра.

lyokha avatar May 18 '15 09:05 lyokha

@lyokha ok, я переписал readme, поставил ссылку на vim-xkbswitch

myshov avatar May 18 '15 17:05 myshov

Всем привет! @ghost355, если можете, проверьте пожалуйста версию input-source-switcher 0.3, теперь должно работать и в консольной версии MacVim.

Проблема была в том, что MacOS X обновляет источники ввода для процесса внутри CFRunLoop из CoreFoundation, а поскольку не-GUI версия vim никаких циклов из оси не запускает, то и источники ввода не обновлялись.

vovkasm avatar May 24 '15 00:05 vovkasm

проверил input-source-switcher 0.3 - вроде работает :) при выходе из i-режима русский на английский - задержка секунды две, но, если выход двойным ESC - то переключение сразу же

set timeoutlen=1000 ttimeoutlen=0 вот это сработало - переключение из i-режима моментальное

не понятно почему, но set -s escape-time 0 не воспринимается vim 'ом - говорит неизвестная опция Версия 7.4.826

Спасибо!

ghost355 avatar Aug 29 '15 19:08 ghost355

set -s escape-time 0 - это конфигурация для tmux, а не для vim.

сб, 29 авг. 2015, 22:52, ghost355 [email protected]:

проверил input-source-switcher 0.3 - вроде работает :) при выходе из i-режима русский на английский - задержка секунды две, но, если выход двойным ESC - то переключение сразу же

set timeoutlen=1000 ttimeoutlen=0 вот это сработало - переключение из i-режима моментальное

не понятно почему, но set -s escape-time 0 не воспринимается vim 'ом - говорит неизвестная опция Версия 7.4.826

Спасибо!

— Reply to this email directly or view it on GitHub https://github.com/lyokha/vim-xkbswitch/issues/17#issuecomment-136034377 .

abcdw avatar Aug 30 '15 06:08 abcdw

<--set -s escape-time 0 - это конфигурация для tmux, а не для vim.-->

кто ж знал то :) теперь буду знать

ghost355 avatar Sep 03 '15 10:09 ghost355

Парни, есть кто живой? У меня сейчас, в 2021м, на big sur, не работает это автопереключение на английский ни с libInputSourceSwitcher.dylib ни с libxkbswitch.dylib :(

vlad2135 avatar May 24 '21 09:05 vlad2135