Emacs в Mac OS X привязки клавиш Leopard


104

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

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

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


4
лучше переместить его на apple.stackexchange.com
кодер

Ответы:


163

Замена CTRL и CAPS LOCK

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

альтернативный текст

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

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

альтернативный текст

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


8
«Использовать параметр как мета-ключ» действительно работает, но из-за этого я не могу вводить фигурные скобки и каналы '[] {} |' и т. д., так как они находятся на Option-7 и option сейчас ... хорошо отображаются в мета. Любые идеи?
Мартин Уикман,

1
@wic: Разве у этих персонажей нет собственных ключей?
Кайл Кронин,

1
Не здесь, в Европе. С норвежской клавиатурой они сопоставлены с alt-8 и 9 и alt + shift- 8 и 9.
sverrejoh

3
Переключить раскладку при кодировании. Затем они получают свои ключи, как и положено. Я швед, и мне никогда не нужно вводить свои родные символы во время кодирования.
Per Wiklander

1
@hhh Настройки относятся к клавиатуре, поэтому убедитесь, что вы правильно установили их для своей внешней клавиатуры. Но да, как только вы внесете изменение, оно должно работать везде в OS X.
Кайл Кронин,

47

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

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

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

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

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

Добавьте Optionк Ctrl+ Fили Ctrl+, Bчтобы перемещать слово вместо символа за раз.


Еще один хороший ресурс - это страница hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau,

3
Ch удаляет текстовые поля bash и Mac OS X Cocoa, но помогает в emacs.
asmeurer

11

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

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

удачи


6
Возможно, вы что-то знаете - я не могу вспомнить, когда в последний раз использовал Caps Lock.
Кайл Кронин

11

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

Как только я это понял - у меня это отлично работает!


9

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

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

  • Page Up: Ctl-v
  • Страница вниз: Esc-v

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

Листать вниз

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

Page Up

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


7

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

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


4

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

(setq mac-command-modifier 'ctrl)

и это позволяет мне использовать Caps Lock в качестве команды в большинстве приложений OSX и в качестве элемента управления в emacs. работает достаточно хорошо для меня.


4

Ваша радость только начинается. Другие приемы включают:

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

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


это так здорово! Спасибо! Я даже не подумал сделать эту условную логику для кнопки Capslock. так болен!
wle8300

3

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

(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])


0

Я создал достаточно полный набор привязок здесь для использования снаружи Терминала.

Лично я не могу использовать клавиатуру ноутбука Mac из-за отсутствия нужной клавиши управления.

Вместо этого я использую Microsoft Natural Ergonomic Keyboard 4000 более 7 лет: у нее действительно толстые, хорошо расположенные клавиши Ctrl и Alt, а после загрузки драйверов клавиши «Пуск» и «Приложение» тривиально переназначаются на Mac. Клавиша Cmd тоже толстая и легко нажимается.

Чтобы избежать проблем с эргономикой emacs, я приучил себя использовать Ctrl, Alt и Cmd так же, как мы используем Shift - нажимая на них рукой, противоположной той, которая вводит настоящую клавишу. (То есть я просто оставляю Caps Lock как есть.)


0

Я установил Caps Lock для управления в системных настройках, и у меня есть следующее в моем init.el, чтобы установить команду на meta и опцию на super:

(custom-set-variables
 '(ns-alternate-modifier (quote super))
 '(ns-command-modifier (quote meta)))

0

Я бы порекомендовал 2 программы Seil и Karabiner . Просто установив Seil и следуя инструкциям в программном обеспечении, вы сможете добиться желаемого. По моему опыту, Карабин более мощный. У меня японская клавиатура, раскладка которой отличается от нормальной. У меня есть фрагмент, который переназначает две дополнительные клавиши на моей клавиатуре на F18 и F19 для другого использования. Вы можете использовать тот же синтаксис для редактирования файла "private.xml", чтобы делать больше.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.