Вам нужно точно указать ключи. "C-x C-f"
- это строка, состоящая из заглавной буквы C
, да sh, строчных букв x
, пробела и т.д. c .: это описание того, что вы нажимаете.
На самом деле вы нажимаете [24 6]
вектор из двух символов (символы внутри представлены как целые числа, а 24 и 6 - целые числа, представляющие Control-x и Control-f соответственно). Другой способ описать вектор этих двух символов - это строка, состоящая из двух символов: "\C-x\C-f"
- это один из способов, как указывает Алекс Отт в своем ответе; эквивалентно "\x18\x6"
использует шестнадцатеричные значения 24 и 6 соответственно; или "\030\006"
использует восьмеричные значения.
Но мы бы предпочли использовать описание "C -x C -f", поэтому (как Алекс Отт снова указывает в своем ответе) kbd
переводится из описания в фактическую последовательность символов:
(kbd "C-x C-f") --> "^X^F"
, которая на самом деле состоит из двух символов: Control-x и Control-f. Принтер LISP использует представление каретки, чтобы указать их, поэтому он выглядит как четыре символа между кавычками, но это так, как они выглядят: если вы делаете вышеупомянутое в своем буфере *scratch*
, поместите курсор на левую кавычку и нажмите стрелку вправо или C-f
на них, и вы увидите, что между кавычками есть только два символа.
Все это и многое другое объясняется в руководстве по GNU Emacs Lisp, в Тип символа раздел и его подразделы.