Простые сочетания клавиш Emacs - PullRequest
5 голосов
/ 27 мая 2010

У меня есть две операции, которые я делаю все время в Emacs:

  1. Создайте новый буфер и вставьте буфер обмена. C-S-п
  2. Закрыть текущий буфер. C-S-W
  3. Переключиться на последний просмотренный буфер. C-TAB

Я чувствую себя акробатом на клавиатуре при выполнении первых двух операций. Я думаю, что стоит попробовать некоторые пользовательские привязки клавиш и макросы.

Несколько вопросов об этой настройке:

  1. Как бы я сделал макрос для # 1?
  2. Это хорошие привязки клавиш? (Я знаю, что это немного субъективно, но они могут использоваться чем-то популярным, что я не использую.)
  3. Кто-нибудь нашел макрос C-TAB , который будет действовать как Alt + Tab в Linux / Windows? В частности, я хочу иметь стек буферов в соответствии с последней просмотренной временной меткой (самая последняя сверху). Я хочу продолжать циклически перемещаться по стеку, пока не отпущу клавишу Ctrl . Когда клавиша Ctrl отпущена, я хочу, чтобы текущий буфер получил обновленную позицию в стеке.

Ответы [ 3 ]

4 голосов
/ 29 мая 2010

Вы пытались использовать для этого окна с вертикальным или горизонтальным разделением (через C-x 3 или C-x 2 )? Похоже, это даст вам меньше шагов - даже если вы реализуете что-то, о чем говорите.

Я считаю, что разделенные окна действительно ускоряют операции копирования и вставки. Я использую клавиши со стрелками на своей цифровой клавиатуре для переключения между окнами (windmove-left / -right / -up / -down), поэтому нажимать можно только одну клавишу, и вы переходите к нужному окну.

Полагаю, это немного отличается от того, что вы просите, но, похоже, это может помочь немного ускорить процесс.

C-x влево и C-x вправо циклически перебирают буферы, но вы должны нажимать его несколько раз, вы не можете просто удерживать клавишу нажатой.


Для создания макроса для # 1 вы просто запускаете макрос, нажимаете клавиши, которые вы обычно делаете, чтобы создать новый буфер, и останавливаете макрос.

Так было бы что-то вроде:

C-x ( C-x b NEW RET C-x)

После завершения вставки вы можете сохранить NEW в файл, чтобы снова использовать макрос для создания нового буфера. C-x e , чтобы опробовать макрос. Если это работает, вы можете сохранить его в файл init.el. Это делается с помощью:

М-х name-last-kbd-macro

Затем вы получите приглашение ввести имя по вашему выбору. Это хорошо только для текущей сессии. Затем вы сохраняете указанный макрос в файл инициализации. Сначала вы открываете файл .emacs или init.el. Затем вы помещаете точку туда, куда вы хотите добавить определение макроса, затем набираете:

М-х insert-kbd-macro

Теперь вы можете запустить свой макрос, используя его имя через M-x <macroname>. Вы также можете привязать свой макрос к клавишам (в файле .emacs или init.el):

(global-set-key (kbd "C-c a") '<macroname>)

Например, вот как ваш init.el будет выглядеть после создания макроса, который открывает новый буфер с именем NEW, который не связан с файлом, и привязывает этот макрос к Cc n :

;; Creates a new unassociated buffer called NEW
(fset 'new-buffer "\C-xbNEW\C-m");
;; Shortcut for new-buffer
(global-set-key (kbd "C-c n") 'new-buffer)

Вы также можете добавить операции вставки, закрытия буфера и переключения буфера. Я полагаю, вам придется сохранить буфер в файл вручную.

Некоторые ресурсы

1 голос
/ 28 мая 2010
  1. Я бы не стал делать макрос для этого, но написал бы такую ​​функцию, как кто-то другой, размещенный на этой странице. Вместо (cua-paste nil) вы также можете использовать (yank). Я не уверен, какой из них лучше и почему.
  2. Мне они не очень нравятся. Для вещей, которые я часто использую, я бы хотел сделать акробатику мизинцем настолько, насколько это возможно, чтобы это означало модификатор + ключ вместо modifier1 + modifier2 + key .. или использовать функциональную клавишу, если вы не чувствуете привязанность к homerow .
  3. без комментариев
1 голос
/ 27 мая 2010
  1. начать с вызова start-kbd-macro , завершить с помощью end-kbd-macro . После этого вы можете немедленно протестировать новый макрос с помощью call-last-kbd-macro . Если вы довольны результатом, вы можете сохранить макрос .
  2. Emacs обычно не использует сочетания клавиш C-S, и они просты в использовании, поэтому я бы назвал их хорошими. Они могут вызвать проблемы, если вы используете терминальную версию Emacs, но я полагаю, что это не так с вами.
  3. Я использую этот простой фрагмент:

    (глобальный набор ключей (kbd "") 'скрытый буфер)

bury-buffer делает текущий буфер последним в списке буферов, чтобы вы могли циклически менять буферы в предсказуемом порядке.

...