vim-xkbswitch
vim-xkbswitch copied to clipboard
не получается заставить работать на Mac OS 10.10.2
установил 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'
то при переключении в инсерт - русский переключается, и при выходе остается. Если включить принудительно английский, то при следующем заходе в инсерт на русский уже не переключается.
Хотелось бы, чтобы заработало так - при нормал режиме всегда был английский, при инсерт режиме, тот язык, который был включен последним в этом режиме.
Спасибо.
Я, к сожалению, вряд ли смогу вам помочь, у меня нет мака и я не смогу все это проверить. Попробуйте обратиться к автору http://github.com/vovkasm/input-source-switcher
Спасибо. Так вроде 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 проверьте также, что issw не просто правильно переключает раскладку, но и правильно репортит текущую
Взял у @myshov xkbswitch скомпиленный под мак и положил в /usr/local/bin/ Все работает.
Круто, может тогда его реализацию упомянуть в доке? Я в этой ситуации действую вслепую - у меня не на чем проверить реализации, поэтому приходится доверять авторам.
Давайте, если автор в ближайшие пару дней не откликнется, то форкну его репозитории, допишу нормальное README и отпишусь в местное README.
Кстати, его сишный интерфейс надо будет поправить: он течет из-за malloc(). Там вполне статического буфера хватит.
спасибо, xkbswitch нормально работает- потестирую в процессе работы, пока основную задачу выполняет единственно, переключение не моментально, а слегка задержка, причем при вход в инсерт моментально, а при выходе по Esc - задержка почти секунда
@ghost355 Возможно это задержка отрисовки в трее, у меня тоже как бы медленно переключает в linux/xneur - флаг перерисовывается через почти секунду, а на самом деле переключение раскладки происходит мгновенно
@lyokha проверил если сразу после Esc нажать команду то первое нажатие не срабатывает, только второе, ну или чуть подождать.. есть какая то пауза, это не критично, но при быстрой работе может и будет раздражать, пока вроде все ок
а как-то можно заставить работать, например для замены - клавиши 'r' - при этом же режим Insert не включается?
Почему то был уверен, что создал ишью на эту тему. Да, было бы очень круто, если в Replace mode расскалдка была как и в insert mode. Но давайте обсуждение этого все же вынесем в отдельное ишью.
Режим Replace Mode (который включается большой R
) поддерживается, замена символов, которая включается маленькой r
- нет. Во втором случае трудно поймать соответствующее событие: если переходы между Insert / Normal / Replace режимами являются событиями с точки зрения API vim, то включение замены символа - нет. Причем, с помощью маппинга еще можно заставить язык переключиться после нажатия r
, а вот как вернуть его обратно после введенной замены - неясно.
@ghost355 Может у вас какой-нибудь insert mapping установлен, начинающийся с <Esc>
или, что то же самое, с <C-[>
, проверить это можно введя команду :imap <Esc>
. Если это действительно так, то у вас будет задержка выхода из режима ввода вообще (а не только переключения раскладки), равная timeoutlen
(по умолчанию одна секунда, см. :help timeoutlen
). И, если это так, то вам лучше избавиться от такого маппинга, он вреден сам по себе.
:map сообщает- "no imap found'
У меня не работает только под терминальной версией vim, c MacVim все переключается. MacVim устанавливал через Homebrew с ключем --override-system-vim Так же заметил что issw выдает разные id для раскладки Programmer Dvorak. Проблема описана здесь
@ghost355 Задержка с Escape может быть из-за tmux'a. Вот решение: set -s escape-time 0
@wbauer Попробуй https://github.com/myshov/libxkbswitch-macosx работает вроде неплохо.
Да с Xkbswitch-macosx все работает!
Предлагаю Лёхе упомянуть об альтернативе в README.
@wbauer Я уже предлагал сделать ссылку на эту реализацию, только ребята собирались его немного улучшить (устранить утечки памяти и т.п.), пока от них нет вестей. В любом случае я сделаю это, если решение действительно рабочее, и, похоже, это действительно так.
@wbauer Пофиксил интерфейс. Проверил работает в vim 7.4.712, Mac OS X 10.10. Советую обновиться :) @lyokha В моей реализации, конечно, есть что улучшить, например, вынести проект в brew и перейти на cmake, но так как и без этого все ок можно уже добавлять в Readme. Все улучшения это по сути usability features так сказать ими займусь позже :)
@myshov Ок, тогда я добавлю ссылку на твою реализацию сегодня-завтра.
@lyokha ok, я переписал readme, поставил ссылку на vim-xkbswitch
Всем привет! @ghost355, если можете, проверьте пожалуйста версию input-source-switcher 0.3, теперь должно работать и в консольной версии MacVim.
Проблема была в том, что MacOS X обновляет источники ввода для процесса внутри CFRunLoop из CoreFoundation, а поскольку не-GUI версия vim никаких циклов из оси не запускает, то и источники ввода не обновлялись.
проверил input-source-switcher 0.3 - вроде работает :) при выходе из i-режима русский на английский - задержка секунды две, но, если выход двойным ESC - то переключение сразу же
set timeoutlen=1000 ttimeoutlen=0 вот это сработало - переключение из i-режима моментальное
не понятно почему, но set -s escape-time 0 не воспринимается vim 'ом - говорит неизвестная опция Версия 7.4.826
Спасибо!
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 .
<--set -s escape-time 0 - это конфигурация для tmux, а не для vim.-->
кто ж знал то :) теперь буду знать
Парни, есть кто живой? У меня сейчас, в 2021м, на big sur, не работает это автопереключение на английский ни с libInputSourceSwitcher.dylib ни с libxkbswitch.dylib :(