Вопрос: Команда для переключения раскладки клавиатуры


Я использую клавиатуру с другой компоновкой, чем qwerty. Это боль, когда я использую редактор vim, поэтому я решил изменить раскладку клавиатуры на qwerty только тогда, когда я использую vim. Я придумал использовать автокоманду, которая меняет макет при входе / выходе Vim. (Я новичок в vim, и я мало что знаю о vim, и это все, о чем я мог подумать).

Мой Ubuntu - 18.04. Я нажал кнопку выбора в Region & Language, Settings, чтобы «разрешить разные источники для каждого окна». setxkbmap команда изменяет ширину раскладки клавиатуры. Вы знаете, как заставить его работать хорошо или любую другую подходящую команду?

Я также был бы признателен за любые предложения по настройке vim (хотя это может быть более целесообразно размещать на сайте сообщества Vim).


4
2017-07-12 11:06


Источник


Не достаточно ли назначить сочетание клавиш с коммутатором макета и просто переключиться, когда вы откроете vim? - terdon♦
Моя попытка - автоматизировать эту процедуру. - kazuki
ОК. Как запустить vim? Всегда из командной строки? - terdon♦
Да. Это не gvim или какой-либо другой вариант vim. Один на терминале. - kazuki
Какую раскладку клавиатуры вы хотите? - terdon♦


Ответы:


Достаточно просто добавить эту строку в ~/.vimrc:

set keymap=foo

где foo это имя вашей раскладки. Например, я тестировал set keymap=greek и я печатал по-гречески, когда открывал vim (конечно, тогда я не мог выйти из этого, но для вас это vim).


Если это не работает по какой-то причине, вот уродливый, взломанный подход, который вы могли бы попробовать вместо этого. Добавьте это в свой ~/.bashrc:

vim(){
  setxkbmap XX ## change this to whatever keymap you use for vim
  command vim  ## launch the actual vim executable
  setxkbmap YY ## change to whatever your default layout is
}

Теперь откройте новый терминал и используйте vim, Раскладка клавиатуры будет автоматически изменена для сеанса vim и изменена при выходе из vim.

Однако это не очень хорошее решение, потому что раскладка клавиатуры будет изменена для всех приложений. Он просто делает это автоматически и изменяется при выходе, но у вас все еще будет новый макет для всех остальных окон, а также vim. Первый подход намного лучше.


3
2017-07-12 11:43



Графический интерфейс настроек ввода текста (по крайней мере, один из старого старого Unity) позволяет включить изменение раскладки клавиатуры только для отдельных окон. Интересно, как они делают это под капотом и может ли он быть воспроизведен в терминале ... - Byte Commander
@ByteCommander да, это упоминается в вопросе. Это старая функция, предположительно глубокая X, так как это было задолго до Unity. Но, насколько я знаю, это просто позволяет вам изменить макет, в то время как в одном окне есть фокус, а затем переключиться в другое окно, измените макет, и затем каждое окно запоминает его макет, когда вы переключаетесь между ними. - terdon♦
На самом деле, я нашел полезным использовать langmap, потому что моя клавиатура уже английская, и моя проблема была такой, как плохие позиции hjkl. (Я должен был быть более конкретным.) Хотя из вашего ответа мне было легко угадать, что существует противоположная установка, и это привело к разрешению. Большое спасибо! - kazuki