2013-04-22 4 views
4

Используя экзотическую раскладку клавиатуры, я должен переназначить g (среди прочего), который находится на моем макете, в позиции h на классическом макете qwerty. Для этого я решил заменить g на h следующими командами:Vim: замена 2 символов в режиме ожидания операции

noremap g h 
noremap h g 

Это не работает. Например, ввод hh рассматривается как gh, а не gg. Также при нажатии g отображается g (с включенным showcmd), а не h, и, похоже, он не учитывает переназначение, он действует как команда g. Но при повторном нажатии g или ожидании 1 секунды он фактически перемещается влево.

Я попытался следующие, чтобы сделать его работу в эксплуатацию рассматриваемой режим

onoremap g h 
onoremap h g 

но это ничего не меняет.

Так почему же так себя ведет? И как это исправить?

ответ

3

Проблема с несколькими ключевыми командами, как gg (или различных <C-w> команд, из которых я помню подобный вопрос) в том, что они не g команды с последующим g оператором. (Особенно с префиксом g, есть целый ряд несвязанных команд не было в первоначальном VI в этом пространстве.)

Боюсь, вам придется определить отдельные remappings для всех из них:

:nnoremap hh gg 
... 
+0

Ну, это позор. И хотя это вопрос ответов на вопрос, он не объясняет поведение, которое я описал (g remap, который не работает даже в нормальном режиме), что является самым раздражающим. Спасибо, в любом случае. – bootleg