lyokha / vim-xkbswitch

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

Появление ошибок во время открытия файла #51

Closed kukushkawi closed 2 years ago

kukushkawi commented 2 years ago

Здраствуйте. Очень благодарен вам за плагин. Довольно долгое время он работал бесперебойно, но некоторое время назад я столкнулся с багом (?). Случилось это когда я переписывал конфиг для nvim (версия 0.6.0). Некоторое время он отказывался работать вовсе, но я всё же как-то его настроил и он работает. Сейчас при открытии любых файлов выбивает ошибки. Пробовал создать отдельный конфиг с только вашим плагином и результат не очень изменился, точнее совсем не изменился. Приложил скриншот ошибок (не всех, но они там почти не отличаются, буквально несколько чуть-чуть других ошибок если понадобится и их приложу). pic-full-211227-2142-57 Содержание конфигурации плагина: Plug 'lyokha/vim-xkbswitch' let g:XkbSwitchEnabled = 1 let g:XkbSwitchLib = "/usr/lib/libxkbswitch.so" let g:XkbSwitchNLayout = 'us' let g:XkbSwitchIMappings = ['ru, uk, us'] Пробовал наверное все возможные конфигурации плагина, но только с этими он работал (могу для точности проверить не ошибся ли я если нужно). Постарался дать столько информации сколько могу, надеюсь она будет полезна

lyokha commented 2 years ago

Добрый день, а почему

let g:XkbSwitchIMappings = ['ru, uk, us']

а не

let g:XkbSwitchIMappings = ['ru', 'uk', 'us']

Он, кажется, на это и ругается. Кстати, у меня тоже Neovim 0.6, и плагин работает.

kukushkawi commented 2 years ago

Действительно ошибся, видимо проглядел когда читал readme. Поправил, те ошибки исчезли, но появились четыре других. Приложил скриншот. pic-full-211227-2342-30 Плагин у меня работает, лишь эти ошибки появляются. Первое время думал что переживу, но когда нужно было что-то быстро записать... в итоге решил всё же открыть issue

lyokha commented 2 years ago

Посмотрите документацию (в README.md) про g:XkbSwitchIMappings, там сказано, что из коробки поддерживается только раскладка для русского языка (ru), и показано на примере как добавить поддержку немецкого (de). Но у вас кроме русского, us и uk - маппинги для них переводить вообще не нужно, так как они изначально соответствуют оригинальной английской раскладке.

Соотвественно, объявите просто

let g:XkbSwitchIMappings = ['ru']

Это то, что реально нужно.

kukushkawi commented 2 years ago

Блин, выходит очень сильно проглядел. Исправил и теперь ошибок нет. С украинской раскладкой (которую я и обозначал uk, потому что другого кода для этого языка нет, когда для британского английского есть GB(en_GB), поправьте если не прав), кажется, всё работает. Извините за потраченное время. Ещё раз спасибо за ваш плагин, без него я бы уже ушёл на какой-нибудь другой редактор. Он незаменимый для заметок в vimwiki. Да и поддерживать плагин такое количество времени вряд-ли бы кто-то стал. Спасибо за помощь

lyokha commented 2 years ago

И вам спасибо за добрые слова )) Оказывается, uk это украинский (я сначала почему-то подумал, что это united kingdom, сорри). Да, вам нужно вручную написать сопоставление символов из us в uk - грубо говоря, перевести английские символы на клавишах в украинские, соответствующие данным клавишам. В принципе, это не обязательно - это всего лишь маппинги в режиме ввода, и если вы не пользуетесь ими активно, то они и не нужны. Но некоторые плагины, например, управляющие автоматическим добавлением парных скобок, могут определять свои insert mappings, и это может приводить к разным неожиданным эффектам: в этом случае, перевод g:XkbSwitchIMappings на язык, отличный от us, может оказаться необходимым.

kukushkawi commented 2 years ago

Да ничего, я и сам в повседневной жизни прежде всего подумал бы об uk как об United Kingdom. Я кое-как запомнил это, лишь благодаря запросам, которые я вводил когда искал какое сокращение у украинского. До сих пор uk ассоциируется с United Kingdom. Особо такими плагинами не пользуюсь (по крайней мере не припоминаю таких), но возьму на вооружение и обязательно попытаюсь их написать. Про многое из рассказанного вами не знал, спасибо что рассказали. Удачи и спасибо за помощь

kukushkawi commented 2 years ago

Извиняюсь, что так донимаю, но у меня при взгляде на документацию про сопоставление символов возник вопрос: let g:XkbSwitchIMappingsTr = { \ 'ru': \ {'<': 'qwertyuiop[]asdfghjkl;''zxcvbnm,./'. \ 'QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?~@#$^&|', \ '>': 'йцукенгшщзхъфывапролджэячсмитьбюё.'. \ 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё"№;:?/'}, \ 'de': \ {'<': 'yz-[];''/YZ{}:"<>?~@#^&_\', \ '>': 'zyßü+öä-ZYÜÖÄ;:_°"§&/(?#'}, \ } ` во втором языке (в примере из документации это de) нужно также вводить qwerty как в первом? Специально проверял про правильную немецкую раскладку ли я думаю. Могу ли я сделать также как в примере с русским но для второго языка лишь изменив несколько отличных букв?

kukushkawi commented 2 years ago

md накосячил с вырезкой из документации(

lyokha commented 2 years ago

В de qwert не нужно переводить, так как эти символы расположены одинаково с английской раскладкой, а вот y заменяется на z - с этого и начинается трансляция, в общем правило такое - смотрим на клавиши, если символ в транслируемом языке совпадает с английской раскладкой, то записывать в маппинги его не нужно, в русском и украинском (в отличие от немецкого) почти все клавиши не совпадают, поэтому перевод там длинный. Кроме этого, нужно особенно осторожно переводить знаки пунктуации - в документации есть пример к каким чудесам такие переводы могут привести, но тут заранее не угадать, поскольку конкретное нездоровое поведение может зависеть от других плагинов с собственными insert mappings, поэтому если что-то начнёт работать странно при вводе, то возможно придётся удалить некоторые переводы символов пунктуации.

kukushkawi commented 2 years ago

Так как раскладки почти идентичные, я скопировал русскую раскладку и заменил отличные знаки. В одном моменте (после "ю") знак ' закрывал элемент, поэтому я продублировал этот знак

\ 'ru':
    \ {'<': 'qwertyuiop[]asdfghjkl;''zxcvbnm,.`/'.
    \       'QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?~@#$^&|',
    \  '>': 'йцукенгшщзхъфывапролджэячсмитьбюё.'.
    \       'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё"№;:?/'},
    \ 'uk':
    \ {'<': 'qwertyuiop[]asdfghjkl;''zxcvbnm,.`/'.
    \       'QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?~@#$^&|',
    \  '>': 'йцукенгшщзхїфівапролджэячсмитьбю''.'.
    \       'ЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЭЯЧСМИТЬБЮ,ʼ"№;:?/'},
    \ }

(не уверен, что не накосячил с md тут) Пока никаких ошибок и "сюрпризов" не заметил

lyokha commented 2 years ago

Выглядит хорошо, только Ээ в украинском нет же (они в другую сторону должны смотреть). Если хотите, присылайте пулл-реквест - это можно вставить в файлы xkbswitch.vim и xkbswitch.tr (при этом кодировка при редактировании должна быть Utf8, на современных линуксах это всегда так, да и в других ос тоже, наверное). И у вас пользовательские настройки станут проще.

kukushkawi commented 2 years ago

Да, точно, вы правы, их нет, прозевал (сонливость даёт о себе знать), сейчас исправил. Смешно об этом говорить, но я не очень разбираюсь в git (что говорить, когда я лишь недавно начал использовать github) и его работе, даже несмотря на то, что я уже длительное время использую дистрибутив на линуксе (выделил это, потому что RMS держит в заложниках), поэтому про пулл реквест не уверен, что правильно вас понял. Отредактировал названные вами файлы: pic-full-211229-0143-06 pic-full-211229-0145-03

kukushkawi commented 2 years ago

Прислал два отдельных пулл реквеста. Первый редактирует xkbswitch.tr, второй же, соответственно, xkbswitch.vim. Как-то так

lyokha commented 2 years ago

Круто! Смерджил. Правда почему-то в вашем реквесте в g:XkbSwitchIMappingsTr пропала двойная одинарная кавычка для uk после бю - я поправил, еще в xkbswitch.tr поменял местами de и uk, так как uk похож на ru - пусть они будут рядом. Спасибо!

kukushkawi commented 2 years ago

Странно. Может как-то случайно нажал "x" и удалил. Сам думал изменить расположение украинской раскладки, но на скорую руку оставил как было. В любом случае, спасибо вам, и удачи!