#emacs #lisp
#emacs #шепелявить #lisp
Вопрос:
на самом деле я пытаюсь настроить свои клавиши emacs для перемещения курсора. И что я хочу заархивировать, так это то, что когда я ввожу M- или M —, курсор перемещается либо в конец строки, либо в начало. А также я пытаюсь настроить C-i для обратного абзаца и прямого абзаца. То, что, по моему мнению, должно быть сделано с помощью некоторого кода в моем файле .emacs, выглядит следующим образом:
(global-set-key (kbd "C-k") 'forward-paragraph)
(global-set-key (kbd "C-i") 'backward-paragraph)
(global-set-key (kbd "M- ") 'back-to-indentation)
(global-set-key (kbd "M--") 'end-of-line)
Но, к сожалению, ни один из этих глобальных ключей не работает. Может кто-нибудь подсказать мне, что я делаю не так? Заранее спасибо
Комментарии:
1. Как насчет
beginning-of-line
вместоback-to-indentation
? В любом случае, ваш код работает нормально:(global-set-key (kbd "M- ") 'back-to-indentation) (global-set-key (kbd "M--") 'end-of-line)
если он не работает, попробуйте поместить его в самый конец вашего файла конфигурации. Если это работает, то, возможно, у вас где-то есть другая конфигурация, переопределяющая ее — например, в установленной вами сторонней библиотеке или в определенном активном режиме. Продолжайте и нажмитеC-h k
, а затем соответствующие привязки клавиш, чтобы посмотреть, что появляется — возможно, это покажет, что на самом деле происходит что-то еще.2. Поскольку локальные карты ключей имеют приоритет над глобальными, вам нужно убедиться, что для этих ключей не существует локальных привязок. Используйте «режим описания» для просмотра текущих локальных привязок. Если вы хотите использовать приведенные выше привязки независимо от локальной раскладки, вам нужно использовать другой подход, например, поместить ваши привязки в новую разреженную расклад-карту в новом второстепенном режиме, который всегда активен.
3. Просто интересно… Клавиши ‘home’ и ‘end’ на вашей клавиатуре не работают? Насколько я знаю, Ctrl-up и Ctrl-down помогают перейти к началу и концу текущего абзаца соответственно.
4. @Mark shure эти клавиши работают на моей клавиатуре. Но каждый раз, когда мне приходится их использовать, мне приходится перемещать правую руку из исходного положения к клавишам «home» и «end», что отнимает много времени. И из-за этого я хотел определить некоторые клавиши, которые находятся прямо рядом с начальной позицией
5. @PolymathMonkey, я вижу 😉
Ответ №1:
Альтернативный способ определения привязок клавиш — использовать векторную нотацию:
(global-set-key [(control k)] 'forward-paragraph)
(global-set-key [(control i)] 'backward-paragraph)
(global-set-key [(meta ? )] 'back-to-indentation)
(global-set-key [(meta ?-)] 'end-of-line)
Я нахожу этот способ более интуитивным, и я использую его уже так много лет, что я уже забыл предостережения о «обозначении kbd»