Qt поддерживает привязки клавиш в стиле Emacs , но только для четырех ключей. Чтобы понять, почему этот предел должен быть увеличен, было бы полезно показать примеры комбинаций клавиш в стиле Emacs с еще большим количеством клавиш. Есть ли известные примеры для этого или, может быть, даже способ программно найти последовательности длинных клавиш, определенные в таблицах ключей Emacs?
редактировать: я думал, что это было общеизвестно, но последовательность клавиш представляет собой набор ключей, как прочитано в read-key-sequence
. Попробуйте F1 k
для своего кандидата и посмотрите, описывает ли он вашу команду или не связанный с ней предшествующий.
key-bindings
keymap
wasamasa
источник
источник
C-u 1 0 0 0 C-n
что это шесть клавиш.F1 k C-u 1 0 0 0 C-n
и посмотри, чтоC-u
это сама по себе последовательность клавиш.Ответы:
Я проверил с помощью следующего скрипта,
И самое длинное, что я получаю с моим,
.emacs.d
этоC-x c C-x r i
какая-то команда helm, а с чемemacs -q
я получаю,C-x a i l
которая запускает командуinverse-add-mode-abbrev
.источник
C-x M-c M-b u t t e r f l y
:) Я забыл, что я сделал это ...where-is-internal
безусловно, доминирует здесь время процессора, но вы все равно можете легко сократить несколько циклов, деструктивно добавляя более короткий список к более длинному(setq keyseqs (nconc (where-is-internal sym nil nil t) keyseqs))
.M-x butterfly
? Я просто связал это с этой командой для повышения подлинности :)Я не могу ответить о том, что самое длинное может быть где-то там, но вот одна информация, которая может помочь.
У меня есть несколько библиотек, которые предоставляют набор связанных команд, связанных с клавишами в таблице ключей, которые я связываю с префиксным ключом.
Поскольку я не хочу использовать пользовательские ключи и т. Д., Я обычно связываю такой префиксный ключ в, скажем,
C-x
или, дляother-window
команд, вC-x 4
(таблица ключейctl-x-4-map
).Те же соображения применимы к группам команд в такой карте ключей: они иногда получают свою собственную карту ключей. И так далее, рекурсивно.
Я ожидаю, что по крайней мере некоторые пользователи могут захотеть привязать любые такие комбинации клавиш (на любом уровне) к своим собственным, более коротким, префиксным ключам, или они могут захотеть привязать определенные команды к более коротким последовательностям клавиш. Но я не хочу делать это в самой библиотеке, очевидно.
Вот пример одного такого довольно длинного ключа:
C-x 4 j t . % *
(семь нажатий), который связан с командойicicle-bookmark-file-this-dir-all-tags-regexp-other-window
в Bookmark + .Анатомия:
На
C-x 4
префиксном ключе (ctl-x-4-map
).На
j
клавишу префикса, которая предназначена для всех команд перехода в закладку .На
t
префиксном ключе, который предназначен для всех команд перехода в закладки, помеченные каким-либо образом.На
.
префиксном ключе, который предназначен для всех команд перехода в закладки для файлов в текущем каталоге , помеченных каким-либо образом.На
%
префиксном ключе, который предназначен для всех команд для перехода к закладкам, предназначенным для объектов в текущем каталоге , у которых есть теги , соответствующие регулярному выражению, для которого вас запрашивают.На
*
ключе, который предназначен для всех команд для перехода к закладкам, предназначенным для объектов в текущем каталоге , имеющих теги , ВСЕ из которых соответствуют регулярному выражению, которое вам предлагается. (Напротив,C-x 4 j t . % +
для закладок НЕКОТОРЫЕ из тегов соответствуют регулярному выражению.)Все это является обычным в Bookmark + (и некоторые из них соответствуют соглашениям Dired, BTW):
j
для команд перехода ,t
для тегов ,.
для текущего каталога ,%
для регулярных выражений и*
для всех (+
для некоторых ).(О, и с использованием sexp @ mkcms, я получаю
C-x 4 j t f % *
, что равно длине. Стендf
для файла . Это похожеC-x 4 j t . % *
, но кандидаты в закладки для завершения - это все закладки файлов, а не только файлы в текущем каталоге (.
).)источник
Magit
добавляет длинные последовательности, так как позволяет переключать опции. Например, когда вы запрашиваете журнал, вы можете выбрать короткие или длинные опции, если вы хотите удаленные ветки или нет, если вы хотите графическое отображение ветвей и так далее. Основной запрос для журнала - просто пара нажатий клавиш изmagit-status
буфера, но вы можете добавить еще много.То же самое касается фиксации, двух нажатий клавиш для базового коммита, но множества дополнительных дополнений.
Таким образом, вопрос недостаточно конкретизирован, вы рассматриваете только
stock
(что бы это ни значило) emacs?источник
F1 k
и посмотреть, сколько клавиш вы можете набрать, пока она не описывает команду.