По умолчанию привязка ключей C-a/C-e
используется только для одной цели: перейти к началу / концу строки, есть ли пакет, который может заставить Emacs работать так:
- Если я не в конце строки,
C-e
перейду в конец строки, в противном случае, до конца следующей строки - Если я не в начале строки,
C-a
перейду к началу строки, в противном случае перейду к началу следующей строки.
Дело в том, что вы можете просто нажимать, C-a/e
чтобы перейти к началу / концу каждой строки, не двигая пальцем, чтобы достичь C-n/p
.
И с префиксом ( C-u
) они пойдут в начало / конец строки в обратном направлении.
key-bindings
line-break
motion
CodyChan
источник
источник
C-a
пойти "вверх" иC-e
пойти "вниз"? Другими словами, является ли значение «следующей строки» одинаковым в пунктах 1 и 2?C-a
вверх иC-e
вниз», когда я публиковал этот вопрос, но потом я подумал, что если кто-то дастdefun
решение, подобное тебе, кто-нибудь будет знать, что делать, если ему нравитсяC-a
«вверх» ..Ответы:
Я не знаю пакета, который бы позволял это поведение, но вот один из способов сделать это.
Нажмите,
C-h k C-a
чтобы узнать, чтоC-a
связано сmove-beginning-of-line
; это функция, которую мы должны изменить - или просто использовать для реализации части «переход к началу». Точно так же с помощьюC-h k
я могу найтиforward-line
, который будет использоваться для перемещения вверх / вниз.Чтобы иметь возможность привязать функцию к клавише, нам нужно сделать ее командой , поэтому нам нужно использовать
interactive
специальную форму (см. Использование интерактива ). Чтобы взятьC-u
префиксный аргумент, нам нужен"P"
символ кода.Комбинируя это с
bolp
(проверьте, если в начале строки) иeolp
(проверьте, если в конце строки), мы можем написать:Теперь мы можем повторно связать
C-a
иC-e
назвать их:С другой стороны , можно было бы добавить рекомендации к
move-beginning-of-line
иmove-end-of-line
.источник
my-move-beginning-of-line
. Должно ли это быть(previous-line (if arg -1 1))
или(forward-line (if arg 1 -1))
(1 и -1 переключены)?C-a
илиC-e
.C-a
"вверх".Библиотека
misc-cmds.el
давно имела эту особенность.Это соответствующие команды и предлагаемые привязки клавиш (эти привязки сделаны в
setup-keys.el
).Вот что
C-h f end-of-line+
говорит, в качестве одного примера:источник
Следующие две функции выполняют желаемые действия.
источник