Какуне: Как отобразить "перейти вперед" и "перейти назад" в режиме перехода (например, сопоставить "gp" с <ci>)

Я использую клавиатуру dvorak, и я хотел бы уменьшить напряжение при достижении клавиши управления при использовании <c-i> а также <c-o> (прыгать назад или вперед). Я думаю, что клавиши ',' и 'p' идеальны в сочетании с меню перехода (например, при первом нажатии клавиши 'g'). (Для вас, qwerty люди, это означает, что ключевые позиции "w", "e" и "r" на клавиатуре, когда вы нажмете из меню перехода, будут возвращаться назад, переходить к последнему редактированию и переходить вперед). Таким образом,...

Вот что я хочу:

1) :map global goto , '<c-o>' -docstring 'jump back'                   // Does not work
2) :map global goto p '<c-i>' -docstring 'jump forward'                // Does not work

Однако по необъяснимым причинам ни одна из этих команд не работает. Я попробовал кучу экспериментов и обнаружил еще несколько странных вещей:

Пробовал использовать пользовательский режим вместо режима перехода (как указано здесь: https://github.com/mawww/kakoune/wiki/Implementing-user-mode).

3) :map global user , '<c-o>' -docstring 'jump back'                  // Works
4) :map global user p '<c-i>' -docstring 'jump forward'               // Does not work

Пробовал различные изменения в командной строке в команде map (обратно в режим перехода)

5) :map global goto p 'd' -docstring 'delete the selection'        // Does not work
6) :map global goto p '/d' -docstring 'delete the selection'       // Works! (Why??)
7) :map global goto p '\d' -docstring 'delete the selection'       // Works! (Why?!?)
8) :map global goto p '\<c-o>' -docstring 'jump back'              // Works! (Why?!!?!!?)
9) :map global goto p '\<c-i>' -docstring 'jump forward'           // Does not work (Why!???)

Итак, в итоге:

а) Почему № 3 работает, а № 4 нет?

б) Почему при добавлении косой черты (любого типа) перед командной строкой (например, в #6, #7, #8) работают различные команды, сопоставленные с режимом перехода?

в) Как мне заставить мои намерения работать с № 1 и № 2? (Технически № 8 решает мое намерение № 1, но у меня до сих пор нет ответа на вопрос, как сделать № 2)

1 ответ

Ответ на вопрос А:

Как уже упоминалось здесь,

Остерегайтесь ключей омонимов, таких как <tab> против <c-i> а также <ret> против <c-j> а также <c-m>

я получил <c-i> работать, заменив его <tab>, как это:

:map global user p '<tab>' -docstring 'jump forward'

Вопрос Б:

Мне не удалось выяснить, почему режим goto отличается от режима пользователя, но добавление косой черты до выполнения команды, похоже, решает все проблемы. Другой метод, который я нашел, это добавить <esc> в качестве первой части клавиш действия, которая возвращает его в нормальный режим перед выполнением остальных клавиш.

Ответ на вопрос С:

Комбинируя открытия из вопросов A и B, мы получаем следующие команды рабочей карты:

:map global goto , '\<c-o>' -docstring 'jump back'                   // Works!
:map global goto p '\<tab>' -docstring 'jump forward'                // Works!

...или же...

:map global goto , '<esc><c-o>' -docstring 'jump back'                   // Works!
:map global goto p '<esc><tab>' -docstring 'jump forward'                // Works!
Другие вопросы по тегам