tag:blogger.com,1999:blog-4475786026055229599.post5164725546929495262..comments2023-05-31T14:59:15.775+03:00Comments on Тех-Детали: vim: запуск xkb-switch через интерфейс libcall()garudahttp://www.blogger.com/profile/09970790695114842323noreply@blogger.comBlogger21125tag:blogger.com,1999:blog-4475786026055229599.post-92145649608340806572017-03-26T17:17:11.311+03:002017-03-26T17:17:11.311+03:00Посмотрите, я ответил в git issue.Посмотрите, я ответил в git issue.garudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-31611273580660490572017-03-25T08:42:33.557+03:002017-03-25T08:42:33.557+03:00Вылечилось многочсовыми медитациями над мануалом и...Вылечилось многочсовыми медитациями над мануалом и последующим добавленим этого в vimrc: <br /><br />let g:XkbSwitchSkipIMappings =<br /> \ {'*' : ['.', '>', ':', ';', ',', '{', '/*', '/*'],}<br /><br />Anonymoushttps://www.blogger.com/profile/13450945819536541793noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-67595551473725910902017-03-25T07:59:55.378+03:002017-03-25T07:59:55.378+03:00Сценарии:
1 Создал новый файл -- буквы на месте. С...Сценарии:<br />1 Создал новый файл -- буквы на месте. Сохранил как a.txt -- буквы на месте. Выхожу из vim, снова захожу в vim, открываю a.txt -- теперь нельзя вводить буквы "ж", "б" и "ю" на любых регистрах, вместо них символы из английской раскладки. <br /><br />2. Создал новый файл, Сохранил как a.cpp. Вышел-зашёл в vim, открыл этот файл -- все буквы вводятся нормально. <br /><br />Vim v.8.0 x86, с официального сайта. Плагин взят с гита, установлен с помощью Vundle.Anonymoushttps://www.blogger.com/profile/13450945819536541793noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-66579037250228067662017-03-25T07:43:25.303+03:002017-03-25T07:43:25.303+03:00Приветствую. Скачал с гита ваш замечательный плаги...Приветствую. Скачал с гита ваш замечательный плагин lyokha/vim-xkbswitch и libxkbswitch32.dll к нему (4096 Kb). Всё отлично работает как надо, за исключеним одного случая: в файлах типа .txt иди .md (markdown) в режиме вставки русские буквы Ж и Б превращаются в : и , . Если убрать dll, всё становится нормлаьно, то есть причина видимо в ней.<br /> Самое смешное, что если редактировать файлы с типом .cpp или на других языках программирования, то описанной проблемы нет, она возникает толкьо на текстовых. Что же это за Ж... такая и как это побороть? :(Anonymoushttps://www.blogger.com/profile/13450945819536541793noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-85508858965890250502017-03-25T07:39:49.862+03:002017-03-25T07:39:49.862+03:00Этот комментарий был удален автором.Anonymoushttps://www.blogger.com/profile/13450945819536541793noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-92066624320785106402017-03-25T07:28:38.466+03:002017-03-25T07:28:38.466+03:00Этот комментарий был удален автором.Anonymoushttps://www.blogger.com/profile/13450945819536541793noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-36272762465037829122013-04-02T15:59:24.089+04:002013-04-02T15:59:24.089+04:00Обновил https://github.com/DeXP/xkb-switch-win
При...Обновил https://github.com/DeXP/xkb-switch-win<br />Примеры использования:<br /><br />" En <br />:echo libcall('libxkbswitch64.dll', 'Xkb_Switch_getCurrentCharByUS', 'Q')<br />" Q<br /><br />" Ru<br />echo libcall('libxkbswitch64.dll', 'Xkb_Switch_getCurrentCharByUS', 'Q')<br />" Й<br /><br />" Ru<br />echo libcall('libxkbswitch64.dll', 'Xkb_Switch_getCurrentCharByUS', 'q')<br />" й<br /><br />" En = Ru<br />echo libcall('libxkbswitch64.dll', 'Xkb_Switch_getCurrentCharByUS', '2')<br />" 2<br /><br />Есть функция "получить символ для локали по английскому символу". Но туда надо передавать два аргумента: локаль и сам символ. getCurrentCharByUS сама проверит какая локаль сейчас установлена и вернёт символ из неё.<br />Теперь ещё аналогичную штуку для Linux сделать и вообще хорошо станет :)Anonymoushttps://www.blogger.com/profile/18287951110451283261noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-53342783613376548432013-04-01T22:41:10.385+04:002013-04-01T22:41:10.385+04:00Поправил, http://www.vim.org/scripts/script.php?sc...Поправил, http://www.vim.org/scripts/script.php?script_id=4503 - это ссылка на vim.orggarudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-7579063082440953972013-04-01T22:16:40.974+04:002013-04-01T22:16:40.974+04:00В последней ревизии на гитхабе выбор файла для win...В последней ревизии на гитхабе выбор файла для win-библиотеки не совсем корректен. У меня установлены и переменная win32 и win64. Сейчас пытается подхватить 32-х битную версию. Так что проверять надо сначала на win64, если нет, то на win32.Anonymoushttps://www.blogger.com/profile/18287951110451283261noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-68427634574424745902013-04-01T19:03:44.654+04:002013-04-01T19:03:44.654+04:00Пушнул последние изменения - убрал абсолютный путь...Пушнул последние изменения - убрал абсолютный путь, изменил названия библиотек. Добавил дополнительную защиту для маппингов - попробуйте, странно, что это не работает - это кроссплатформенная часть по идее.garudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-48668724803502678512013-04-01T18:49:08.027+04:002013-04-01T18:49:08.027+04:00Такой код у меня работает: let g:XkbSwitchLib = &#...Такой код у меня работает: let g:XkbSwitchLib = 'libxkbswitch64.dll'<br />Соответственно, если g:XkbSwitch['backend'] будет равен "libxkbswitch64.dll", то тоже будет работать<br /><br />imap из Gvim'a: http://dl.dropbox.com/u/4548378/xlam/vim-imap.png<br /><br />ЗЫ И всё-таки через какой-нибудь instant-messager мы всё пофиксили быстрее бы...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-25640312628211161942013-04-01T18:16:30.823+04:002013-04-01T18:16:30.823+04:00Вы можете показать ваш вывод
:imap
?Вы можете показать ваш вывод<br /><br />:imap<br /><br />?garudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-37326059556089946722013-04-01T18:09:56.955+04:002013-04-01T18:09:56.955+04:00Я не очень понимаю как тогда сработает
if executa...Я не очень понимаю как тогда сработает<br /><br />if executable(g:XkbSwitch['backend']) == 1<br /><br />где g:XkbSwitch['backend'] будет равен "libxkbswitch32.dll" - у вас оно работает?garudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-3145446438908925822013-04-01T18:06:43.328+04:002013-04-01T18:06:43.328+04:00Обновил. Если не трудно, имена по умолчанию для би...Обновил. Если не трудно, имена по умолчанию для библиотек замените пожалуйста на "libxkbswitch32.dll" и "libxkbswitch64.dll"<br />'\\\x' - заменил. Везде добавил по слэшу. Не работает. Ошибка та же(Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-46780826768325673782013-04-01T17:54:17.577+04:002013-04-01T17:54:17.577+04:00Обновил, теперь поддерживается новый интерфейс xkb...Обновил, теперь поддерживается новый интерфейс xkb-switch-win. По поводу ошибки в маппингах: почему-то у вас строка для транслейшна экспандится рано (там должны быть символы \\x27, \\x22, \\x24 и \\x26, а у вас они почему-то уже раскрыты до ', ", $ и & соответственно. Попробуйте вместо вхождений '\\x' в s:from и 'to' записать ещё один слеш, т.е. '\\\x' - заработает после этого? У меня работает и c тремя слешами.garudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-19785627832031913422013-04-01T17:24:43.150+04:002013-04-01T17:24:43.150+04:00На маппинги ругается:
Error detected while proces...На маппинги ругается:<br /><br />Error detected while processing function 29_xkb_switch..29_imappings_l<br />oad:<br />line 32:<br />E475: Invalid argument: qwertyuiop[]asdfghjkl;'zxcvbnm,.`/QWERTYUIOP{}ASDFGHJKL:<br />"ZXCVBNM<>?~@#$^&| <br /><br />По библиотеке - работает. Правда Вы взяли предыдущую версию, она имеет немного другой API. Версия https://github.com/DeXP/xkb-switch-win полностью совместима с кодом, приведенным в этом посте. Например, имеет функцию Xkb_Switch_getXkbLayout, которая возвращает строку)<br /><br />Про пути: сам использую let g:XkbSwitchLib = 'libdxlsw64.dll', такая настройка портируема, а библиотеку надо пихнуть в корневую папку вима<br /><br />Про vundle: сам подцепил его отсюда http://habrahabr.ru/post/148549/ . Но Ваш плагин УЖЕ на гитхабе - установился через Vundle без проблем :-) Но на вимскриптс я б всё-равно выложил. Популярнее будетAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-87772606489390033502013-04-01T15:06:21.877+04:002013-04-01T15:06:21.877+04:00Немного переделал: теперь вместо let g:XkbSwitchLo...Немного переделал: теперь вместо let g:XkbSwitchLoadRuMappings = 1 в .vimrc нужно писать let g:XkbSwitchIMappingsLangs = ['ru'] - маппинги в инсерт моде теперь можно подгружать для произвольного набора языков (однако внутри пока только русский поддерживается)garudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-55621451025022912302013-04-01T13:55:58.058+04:002013-04-01T13:55:58.058+04:00Попробуйте вот эту версию: https://github.com/lyok...Попробуйте вот эту версию: https://github.com/lyokha/vim-xkbswitch<br />Ее нужно поместить в директорию plugin. У меня под Linux работает. В .vimrc нужно указать:<br /><br />let g:XkbSwitchEnabled = 1<br />let g:XkbSwitchLoadRuMappings = 1<br />let g:XkbSwitchLib = 'путь\к\библиотеке'<br /><br />Если путь к библиотеке не указан, то по умолчанию он равен C:\Program Files\xkb-switch-win\libdslxw.dll (для Win32: см. Исходный код). Я все же не думаю, что в плагин нужно вставлять бинарные файлы: настройка g:XkbSwitchLib неявно подразумевает, что плагин зависит от внешнего приложения и это можно указать в файле документации (которого пока ещё нет) - в нем будет указано, откуда брать xkb-switch и вашу библиотеку.<br /><br />Если у вас все заработает, то я добавлю документацию и выложу плагин на vim.org. Да, к сожалению я не силен в vundle или pathogen и обычно пакую по старинке в zip. Поэтому, если вас это смущает, то расскажите мне как они работают :)garudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-78558303808824574562013-03-31T23:29:08.805+04:002013-03-31T23:29:08.805+04:00Перенести код в файл не проблема. Проблема потом е...Перенести код в файл не проблема. Проблема потом его поддерживать. Наверняка потом кто-нибудь захочет ещё какой-нибудь функционал, а продуктивно править Ваш код вряд ли смогу :-)<br />Во-вторых, хотелось бы сохранить авторство - это Ваш код. Моя лишь windows-поделка.<br />Про бинарники - хочу возможность установки плагина одной строкой через Vundle. Установку зависимости в Linux переживу, в Windows всё сложнее. Можно выложить бинарники отдельным архивом, для тех кто хочет. Или ещё как-нибудь автоматизировать. Не хотелось бы усложнять установку.<br />По поводу кроссплатформенности - очень бы хотелось один конфиг Vim'a под все операционки. И привычное поведение и в Linux и в Windows. Вполне может быть что потом кто-нибудь с Mac OS X подтянется<br /><br />Если нет времени/желания/возможности писать/поддерживать плагин, то могу попробовать взяться я. Но хотя бы на первых порах будет нужна помощьAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-3336588068457512452013-03-31T22:05:58.093+04:002013-03-31T22:05:58.093+04:00Добрый вечер. В принципе я приветствую идею реализ...Добрый вечер. В принципе я приветствую идею реализовать все это в виде плагина. Вот только мне не очень нравится идея поместить в него бинарные файлы (да и в Linux варианте без этого можно обойтись, просто указав, что плагин зависит от установленного в системе пакета xkb-switch). Я подумаю как все это можно организовать на следующей неделе. Вы сами можете попробовать написать плагин, даже если у вас небольшой опыт - возьмите код, который здесь приводится и поместите его в отдельный файл в директории ~/.vim/plugin (это для Linux, для Windows должно быть похоже) - это и будет плагин в первом приближении.garudahttps://www.blogger.com/profile/09970790695114842323noreply@blogger.comtag:blogger.com,1999:blog-4475786026055229599.post-66070198974610589032013-03-31T20:28:12.884+04:002013-03-31T20:28:12.884+04:00Здравствуйте! Всё на том же хабре предлагают собра...Здравствуйте! Всё на том же хабре предлагают собрать Ваш код в виде плагина ( http://habrahabr.ru/post/162483/#comment_6075443 ). <br />Для удобства я пересобрал свою библиотеку для переключения раскладки в Windows, теперь она совместима с xkb-switch-lib. <br />Чтоб сделать плагин необходимо добавить проверку самой операционной системы и её разрядности. В зависимости от проверки грузить в vim тот или иной .dll или .so файл. <br />Предлагаю поместить бинарные сборки библиотек в директорию плагина. Не могли бы Вы всё это реализовать? И если не трудно, свяжитесь со мной пожалуйста.<br />Windows-библиотеку можно взять здесь: https://github.com/DeXP/xkb-switch-winAnonymousnoreply@blogger.com