Emacs для привязки ключей Leopard для Mac OS X

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

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

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

Ответ 1

Обмен CTRL и CAPS LOCK

  • Перейдите в Системные настройки
  • Войдите в панель предпочтений клавиатуры и мыши
  • На вкладке "Клавиатура" нажмите "Модификационные ключи"...
  • Сворачиваем действия для Caps Lock и Control.

alt text

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

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

alt text

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

Ответ 2

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

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

Нажмите, затем перетащите - выберите текст
Двойной щелчок, затем перетаскивание - выделение текста, перенос до конца слова
Triple-click then drag - select text, wrapping to paragraph ends

Тройной щелчок, затем перетаскивание - выделение текста, перенос до конца абзацаShift + выделение текста мышью - добавление к выделению (непрерывное)
+ выделение текста мышью - добавление к выделению (несмежное)
+ Drag - выбрать прямоangularьную область (несмежную)
+ + drag - добавить прямоangularьную область к выделению
Перетащите выделение - переместите текст
+ выбор перетаскивания - копировать текст

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, чтобы перемещать слово вместо символа за раз.

Ответ 3

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

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

удача

Ответ 4

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

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

Ответ 5

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

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

  • Страница вверх: Ctl-v
  • Вниз страницы: Esc-v

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

Вниз страницы

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

Страница вверх

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

Ответ 6

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

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

Ответ 7

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

(setq mac-command-modifier 'ctrl)

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

Ответ 8

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

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

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

Ответ 9

Эта тема была запущена 5 лет назад и не упоминается ns-win.el или build --with-ns. Вот все ключевые привязки, доступные (из коробки) в Emacs Trunk по состоянию на октябрь 2013 года. И, конечно же, вы можете создать свой собственный. Лично у меня есть один init.el со всеми моими привязками клавиш, которые можно использовать с Windows XP через Parallels на OSX, а также с OSX изначально. Поскольку пользователь может определить свои собственные сочетания клавиш, я не вижу необходимости переназначать клавиатуру в системных настройках (с клавиатурой Apple U.S.), если не использовать клавиатуру, которая не включает в себя командный ключ. Но, мог бы я выбросить мой кошелек клавиатурных клавиатур 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])

Ответ 10

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

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

Ответ 11

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

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

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

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

Ответ 12

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

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

Ответ 13

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