Иногда мне нужно писать греческие слова, но когда я использую греческую клавиатуру, удар, скажем, <C-p>
будет пониматься как, <C-π>
а не как команда, которую я намереваюсь. Это можно исправить с помощью :map <C-p> <C-π>
. Могу ли я сделать это для всех писем без составления списка всех?
PS. Составление списка всего не дает идеального результата. Например, q
есть ;
на Gr. клавиатура, но мы не хотим отображать; к вопросу Кроме того, по какой-то причине ΖΖ (дзета дзета) не работает после :map Ζ Z
. И команда, которую я определил, \lw
не работает как \λς
.
key-bindings
keyboard-layout
Toothrot
источник
источник
langmap
вариант (см. Документ, который включает пример греческого макета). Эта опция фактически была сделана, чтобы помочь справиться с нелатинскими клавиатурами, такими как греческая или кириллическая. Это позволяет вам определять пары символов, которые будут обычно интерпретироваться в режиме вставки, но будут заменены в других режимах, возможно, это вам поможет.:echo has('langmap')
если у вас есть, у1
вас есть, если у0
вас нет.brew install vim --override-system-vi
и:echo has &c
теперь возвращает 1. ZZ работает. Проблема с\lv
& c остается.:echo has &c
часть, я не понимаю, как она связана с тем, чтоlangmap
после того, как вы скомпилировали vim,langmap
вы должны указать сопоставления:set langmap=ΑA,ΒB,ΨC [...]
в вашем vimrc.Ответы:
Я бы порекомендовал
keymap
, который может решить вашу проблему. Поместите это в свой vimrcотключить греческий язык по умолчанию. Вы можете включить или выключить опцию (греческий), используя
<ctrl>+^
(вы также можете использовать<ctrl>+6
, он отображается на ключе, а не на символе) в режиме вставки и режиме замены (не работает в Нормальный режим). Для автоматического отключения при выходе из режима вставки вы можете использоватьПодробнее об этих
:h iminsert
:h keymap
:h imsearch
:h i_CTRL-^
РЕДАКТИРОВАТЬ ко второму комментарию:
Вы можете попробовать это, чтобы автоматически включить греческий язык, если входите в режим вставки (и заменить режим), и автоматически отключить, если вы выходите (тогда вам не нужно отображение, упомянутое ранее).
источник
:map >a
, и если есть , разархивируйте его:unmap >a
. Как не греческий и не MacOs пользователь, я уже в своем уме. Извините и удачи!Как я сказал в комментариях, отображения не предназначены для того, что вы хотите делать. Интересный вариант для этого варианта использования
langmap
.Эта опция позволяет сохранить поведение вашей клавиатуры в режиме вставки и изменить ее поведение в других режимах.
Чтобы использовать его, нужно скомпилировать Vim
+langmap
, вы можете проверить, включенаecho has('langmap')
ли эта опция : если команда вернет1
опцию, включена, иначе вам нужно будет настроить ее с включенной опцией (чтобы узнать, как это сделать, это другой вопрос).Когда эта опция включена, опция принимает пары символов, например
set langmap += à@
, позволит вам добавитьà
в буфер, когда вы находитесь в режиме вставки, и вы вводите,à
но вводà
в обычном режиме фактически вызовет@
(этот пример может быть полезен на azerty клавиатуры для облегчения работы с макросами).Чтобы использовать langmap на греческом языке, вы можете следовать примеру, приведенному в
:h 'langmap'
добавлении этой строки к вашемуvimrc
(Копирование этой строки отсюда не может быть хорошей идеей, так как я действительно не уверен в кодировке, вероятно, выдергивание строки непосредственно из файла справки безопаснее) :Теперь из того, что я понимаю в ваших комментариях, остается проблема, когда вы пытаетесь использовать предопределенные команды: при вводе команды поведение режима вставки будет запускаться вместо поведения, определенного в langmap. К сожалению, я не уверен, что у меня есть хорошее решение для этого. Одна идея может состоять в том, чтобы переопределить команды, например, так:
Таким образом, когда вы введете команду,
λς
Vim будет выполняться,lw
но я вижу несколько недостатков этого метода:Так что, возможно, плагин, предложенный @Alexander Myshov в его ответе на этот вопрос, может быть полезен (поскольку я никогда не пробовал ни одного из них, я не знаю, решают ли они проблему, но кажется, что они это делают).
источник
Я регулярно печатаю на английском и шведском языках. Шведский - это меньшая проблема, чем греческий, потому что он расширяет английский алфавит всего несколькими символами, но я думаю, что мое решение можно перенести на греческий.
Я привык переключаться с помощью переключателя системной клавиатуры моей ОС. Проблема с этим, как отметил OP, заключается в том, что он прерывает целый набор команд, поскольку в обычном режиме каждая клавиша посылает Vim другой сигнал с неанглийской клавиатуры. В шведской раскладки клавиатуры, кроме того, целая куча не-буквенных символов перемещены , чтобы освободить место для новых персонажей
å
,ä
иö
. Например,}
набирается с помощью Alt-Shift-9 (соответствует открывающей скобке на английской клавиатуре), а обратная косая черта - с помощью Alt-Shift-7. Таким образом, переключение на ванильную шведскую раскладку клавиатуры для режима вставки вызывает целую кучу головных болей.Мое решение состояло в том, чтобы переназначить соответствующие ключи только в режиме вставки и обернуть эти сопоставления в функцию, чтобы я мог легко переключаться назад и вперед. Код ниже, как я сделал это в моем
.vimrc
. Это только добавляет нужные мне символы в положение, которое они имеют в шведской раскладке клавиатуры, оставляя все остальное. Чтобы ввести символы, которые маскируются ими (;
,:
,[
,{
,"
, и'
), я просто нажмите клавишу дважды. К счастью, только глупые люди даже должны напечатать дваä
подряд. (Если это двойное нажатие не подходит, вы можете сопоставить их с Ctrl или что-то в этом роде. Основной принцип заключается в том, что маскированные символы остаются на своих местах на клавиатуре, но одно нажатие клавиши удаляется из реализации. Я считаю, что это намного проще чем перемещать их.) Что означает, что, когда я хочу печатать на шведском языке, я нажимаю<Leader>s
, который переключается на эти сопоставления и применяет шведскую проверку орфографии. Переключаться обратно я делаю<Leader>e
.Теперь, для греческого, это будет включать в себя сопоставления для всего алфавита, что на самом деле меньше хлопот, чем кажется, как только вы поняли принцип. Сложнее было бы отключить все эти изменения при переключении на английский. Возможно, кто-то может придумать отличный способ сделать это.
Я планирую сделать функцию вставки, аналогичную приведенной ниже, для арабского языка, другого языка, который я часто печатаю. Я мог бы вернуться сюда, чтобы сообщить о процессе.
источник
Я также печатаю на двух языках: русском и английском. И теперь я использую этот плагин https://github.com/lyokha/vim-xkbswitch . Этот плагин зависит от встроенного переключателя раскладки клавиатуры, для Mac OS X вы можете использовать мой https://github.com/myshov/xkbswitch-macosx .
источник