Emacs в Mac OS X привязки клавиш Leopard - PullRequest
100 голосов
/ 02 октября 2008

Я пользователь Mac и решил изучать Emacs. Я прочитал , чтобы уменьшить нагрузку на руку и повысить точность, клавиши CTRL и CAPS LOCK необходимо поменять местами. Как мне это сделать в Leopard?

Кроме того, в Терминале я должен использовать клавишу ESC для вызова мета. Есть ли какой-нибудь способ получить ключ alt / option для вызова мета?

обновление: В то время как клавиша управления теперь намного легче нажимается, мета-клавиша также используется достаточно часто, поэтому ее положение на моем MacBook и клавиатуре Apple также заслуживает внимания. На самом деле, я обнаружил, что на управляющий ключ легче попасть, поэтому я переназначил свой управляющий ключ, чтобы он действовал как мета-ключ. У кого-нибудь есть лучшее / более стандартное решение?

Ответы [ 13 ]

160 голосов
/ 02 октября 2008

Обмен CTRL и CAPS LOCK

  1. Перейти к Системные настройки
  2. Войдите в панель настроек Клавиатура и мышь
  3. На вкладке Клавиатура нажмите Клавиши-модификаторы ...
  4. Поменяйте местами действия для Caps Lock и Control .

alt text

Использование ALT / OPTION в качестве META

  1. В строке меню нажмите Терминал
  2. Нажмите Предпочтения ...
  3. На вкладке Настройки перейдите на вкладку Клавиатура
  4. Установите флажок Использовать опцию в качестве мета-ключа

alt text

Вот и все! Вы должны быть на пути к тому, чтобы стать мастером Emacs!

45 голосов
/ 12 января 2009

Для справки, здесь приведены привязки клавиш для перемещения по тексту:

+ - переместиться влево на одно слово
+ - переместиться на одно слово вправо
+ удалить - назад удалить одно слово
Shift + + удалить - вперед удалить одно слово
+ - перейти на один абзац вверх
+ - перейти на один абзац вниз
+ - перейти к началу текущей строки
+ - перейти к концу текущей строки
Shift + любой из вышеперечисленных расширений выбора на соответствующую сумму

Нажмите, затем перетащите - выберите текст
Двойной щелчок, затем перетаскивание - выделение текста, перенос до конца слова
Тройной щелчок, затем перетаскивание - выделение текста, перенос до конца абзаца

Shift + Выделить текст мышью - добавить к выделению (непрерывно)
+ Выделение текста мышью - добавление к выделению (несмежное)
+ Drag - выбрать прямоугольную область (несмежную)
+ + перетащить - добавить прямоугольную область к выделению
Перетащите выделение - переместите текст
+ выбор перетаскивания - копирование текста

Ctrl + A - перейти к началу текущего абзаца
Ctrl + B - переместить влево на один символ
Ctrl + D - переслать удалить
Ctrl + E - перейти к концу текущего абзаца
Ctrl + F - переместить вправо на один символ
Ctrl + H - удалить
Ctrl + K - удалить остаток текущего абзаца
Ctrl + N - перейти на одну строку вниз
Ctrl + O - вставить новую строку после курсора
Ctrl + P - перейти на одну строку вверх
Ctrl + T - транспонировать (поменять) два окружающих символа
Ctrl + V - перейти в конец, затем оставить один символ
Ctrl + Y - вставить текст, ранее удаленный с помощью Ctrl - K

11 голосов
/ 04 декабря 2010

Мне очень нравится ответ, предоставленный Кайлом Кронином, но я хочу добавить одну вещь - убедитесь, что вы выбрали соответствующую клавиатуру, чтобы это работало. Если к ноутбуку подключена внешняя клавиатура, есть дополнительное раскрывающееся окно, и вам нужно будет сделать это для обеих клавиатур (или, по крайней мере, для внешней клавиатуры). На приведенном ниже снимке экрана показано диалоговое окно «Выбрать клавиатуру» - я выбрал «Совместная клавиатура Mac», что в MacBook означает внешнюю клавиатуру GoldTouch - по умолчанию используется встроенная клавиатура.
Screen shot showing

Как только я понял это - это прекрасно работает для меня!

11 голосов
/ 02 октября 2008

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

Кроме того, вы заметите, что подавляющее большинство полей ввода текста в Mac OS X уже принимают нажатия клавиш emacs (^ начало строки, ^ E конец строки, ^ P, ^ N, ^ K, ^ Y и т. д.)

удачи

9 голосов
/ 11 ноября 2008

Если вы используете emacs через ssh-соединение или через компьютер, который не находится на вашем локальном компьютере, кнопки перемещения вверх / вниз страницы пролистывают буфер терминала - по моему опыту, это не слишком полезно.

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

  • Page Up: Ctl-v
  • Page Down: Esc-v

Итак, чтобы терминал отправлял эти команды в emacs, следуйте приведенным выше инструкциям, чтобы изменить клавиши Alt для Meta. Однако вместо настройки параметра «использовать в качестве мета» найдите параметры «страница вниз» и «страница вверх».

Page Down

Дважды щелкните опцию «страница вниз», чтобы отредактировать ее. Измените Действие на «отправить строку в оболочку» и введите \ 026 в качестве строки. Сохрани это.

Page Up

Дважды щелкните по кнопке «страница вверх», чтобы отредактировать ее. Измените Action на «отправить строку в оболочку» и введите \ 033v в качестве строки. Сохрани это.

7 голосов
/ 12 ноября 2008

Не уверен, что вы полностью женаты на использовании Emacs из терминала, но другой вариант - использовать Carbon Emacs (мой любимый) и Aquamacs (очень похожий на Mac). Carbon Emacs использует командную клавишу для мета, это хорошо, потому что вы можете выполнять команды Control-Meta, просто удерживая Control и Command, вместо того, чтобы сначала нажать Escape, а затем последовательность клавиш управления.

Кроме того, если вы серьезный пользователь Emacs, я настоятельно рекомендую вам приобрести клавиатуру, подходящую для программирования (это та, которая полностью перепрограммируется сама по себе). Я использую Kinesis, это немного денег, но они чрезвычайно долговечны и довольно хороши.

4 голосов
/ 07 февраля 2014

Твоя радость только начинается. Другие трюки включают в себя:

  • Используйте левую и правую клавиши Shift, чтобы также быть (и) для быстрого набора.
  • Переопределите вашу клавишу FN или другую клавишу, чтобы она стала "супер".
  • Сделать блокировку колпачков управляемой, но только другим ключом. Само по себе это побег.

Прочитайте отличную статью на http://stevelosh.com/blog/2012/10/a-modern-space-cadet/, чтобы получить больше информации.

4 голосов
/ 29 апреля 2010

Лично у меня есть настройка caps lock, чтобы она действовала как команда в системных настройках, а затем в моем файле emacs init.el:

(setq mac-command-modifier 'ctrl)

и это позволяет мне использовать caps lock как команду в большинстве приложений для osx и как элемент управления в emacs. работает достаточно хорошо для меня.

3 голосов
/ 27 октября 2013

Эта тема была начата 5 лет назад и нет упоминаний о ns-win.el или сборке --with-ns. Вот все привязки клавиш, доступные (из коробки) в Emacs Trunk по состоянию на октябрь 2013 года. И, конечно, вы можете создать свою собственную. Лично у меня есть один init.el со всеми моими привязками клавиш, которые можно использовать с Windows XP через Parallels на OSX, а также с OSX изначально. Поскольку пользователь может определять свои собственные сочетания клавиш, я не вижу необходимости переназначать клавиатуру в системных настройках (с клавиатурой Apple США) , если не используется клавиатура, не включающая клавишу Command. Но могу ли я выбросить свой набор клавиатур IBM со щелчком со встроенным трекпоинтом? Конечно, нет. :) Я беру с собой свои кликабельные клавиатуры IBM в следующую жизнь. Любая деформация руки, скорее всего, вызвана неправильным положением запястья / руки / локтя, а не ударом по сравнению с блокировкой крышки. Точность повышается с помощью практики и с помощью босса, оглядывающегося через плечо, чтобы увидеть, как вы продвигаетесь вперед, т. Е. Небольшое давление для повышения продуктивности:)

(define-key global-map [?\s-,] 'customize)
(define-key global-map [?\s-'] 'next-multiframe-window)
(define-key global-map [?\s-`] 'other-frame)
(define-key global-map [?\s-~] 'ns-prev-frame)
(define-key global-map [?\s--] 'center-line)
(define-key global-map [?\s-:] 'ispell)
(define-key global-map [?\s-?] 'info)
(define-key global-map [?\s-^] 'kill-some-buffers)
(define-key global-map [?\s-&] 'kill-this-buffer)
(define-key global-map [?\s-C] 'ns-popup-color-panel)
(define-key global-map [?\s-D] 'dired)
(define-key global-map [?\s-E] 'edit-abbrevs)
(define-key global-map [?\s-L] 'shell-command)
(define-key global-map [?\s-M] 'manual-entry)
(define-key global-map [?\s-S] 'ns-write-file-using-panel)
(define-key global-map [?\s-a] 'mark-whole-buffer)
(define-key global-map [?\s-c] 'ns-copy-including-secondary)
(define-key global-map [?\s-d] 'isearch-repeat-backward)
(define-key global-map [?\s-e] 'isearch-yank-kill)
(define-key global-map [?\s-f] 'isearch-forward)
(define-key global-map [?\s-g] 'isearch-repeat-forward)
(define-key global-map [?\s-h] 'ns-do-hide-emacs)
(define-key global-map [?\s-H] 'ns-do-hide-others)
(define-key global-map [?\s-j] 'exchange-point-and-mark)
(define-key global-map [?\s-k] 'kill-this-buffer)
(define-key global-map [?\s-l] 'goto-line)
(define-key global-map [?\s-m] 'iconify-frame)
(define-key global-map [?\s-n] 'make-frame)
(define-key global-map [?\s-o] 'ns-open-file-using-panel)
(define-key global-map [?\s-p] 'ns-print-buffer)
(define-key global-map [?\s-q] 'save-buffers-kill-emacs)
(define-key global-map [?\s-s] 'save-buffer)
(define-key global-map [?\s-t] 'ns-popup-font-panel)
(define-key global-map [?\s-u] 'revert-buffer)
(define-key global-map [?\s-v] 'yank)
(define-key global-map [?\s-w] 'delete-frame)
(define-key global-map [?\s-x] 'kill-region)
(define-key global-map [?\s-y] 'ns-paste-secondary)
(define-key global-map [?\s-z] 'undo)
(define-key global-map [?\s-|] 'shell-command-on-region)
(define-key global-map [s-kp-bar] 'shell-command-on-region)
;; (as in Terminal.app)
(define-key global-map [s-right] 'ns-next-frame)
(define-key global-map [s-left] 'ns-prev-frame)

(define-key global-map [home] 'beginning-of-buffer)
(define-key global-map [end] 'end-of-buffer)
(define-key global-map [kp-home] 'beginning-of-buffer)
(define-key global-map [kp-end] 'end-of-buffer)
(define-key global-map [kp-prior] 'scroll-down-command)
(define-key global-map [kp-next] 'scroll-up-command)

;; Allow shift-clicks to work similarly to under Nextstep.
(define-key global-map [S-mouse-1] 'mouse-save-then-kill)
(global-unset-key [S-down-mouse-1])
2 голосов
/ 20 октября 2008

(не эргономичная клавиатура, но мне очень нравится перемещение клавиш и их чувствительность, и клавиша Control, Caps Lock меняются местами).

http://matias.ca/osxkeyboard/index.php

...