Какуне: Как отобразить "перейти вперед" и "перейти назад" в режиме перехода (например, сопоставить "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!