Emacs на Mac OS X Прив'язки клавіш Leopard


104

Я користувач Mac і вирішив вивчити Emacs. Я прочитав , що для зменшення напруги рук і підвищити точність в CTRLі CAPS LOCKключі повинні бути замінені. Як це зробити в леопарді?

Також у Терміналі я повинен використовувати ESCключ для виклику мета. Чи є спосіб отримати ключ alt / option для виклику мета?

оновлення: Хоча зараз керувати клавішею управління набагато простіше, мета-клавіша також використовується досить часто, щоб її позиція на моїй клавіатурі MacBook і Apple також заслуговувала на увагу. Насправді я вважаю, що керуючий ключ насправді легше натиснути, тому я перевстановив свій керуючий ключ, щоб діяти як мета-ключ. Хтось має краще / більш стандартне рішення?


4
краще перенести його на apple.stackexchange.com
yetagethercoder

Відповіді:


163

Обмін CTRL та CAPS LOCK

  1. Перейдіть до системних налаштувань
  2. Введіть панель налаштувань клавіатури та миші
  3. На вкладці Клавіатура натисніть Клавіші модифікатора ...
  4. Обміняйте дії на Caps Lock і Control .

alt текст

Використання ALT / OPTION як META

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

alt текст

Це воно! Ви повинні бути на шляху до того, щоб стати майстром Emacs!


8
"Використовувати параметр як мета-ключ" працює, але це призводить до того, що я не можу вводити дужки та труби "[] {} | ' і т. д., оскільки вони знаходяться на варіанті 7 і зараз варіант ... добре відображає мета. Якісь ідеї?
Мартін Вікман

1
@wic: У цих персонажів немає власних ключів?
Кайл Кронін

1
Тут не в Європі. За допомогою норвезької клавіатури вони відображаються на alt- 8 та 9 та alt + shift- 8 та 9.
sverrejoh

3
Перемикайте макет при кодуванні. Потім вони отримують свої власні ключі, як належить. Я шведка, і ніколи не знаходжу потреби вводити рідні символи під час кодування.
Per Wiklander

1
@hhh Налаштування налаштовані на клавіатуру, тому переконайтесь, що ви правильно встановили її для зовнішньої клавіатури. Але так, як тільки ви внесете зміни, вона повинна працювати всюди в ОС 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- вставити текст раніше вилучений зCtrlK

Додайте Optionдо Ctrl+ Fабо Ctrl+, Bщоб перемістити слово замість символу одночасно.


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

3
Ch видаляє в bash та в текстових полях Mac OS X Cocoa, але це допомагає в emacs.
асмеурер

11

Інша відповідь була дуже повною, але додатково я зазначу, що я просто встановив клавішу блокування ковпачків на другу керуючу клавішу, а не міняючи їх.

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

Щасти


6
Ви можете щось робити - я не можу згадати востаннє, коли користувач замикав шапки.
Кайл Кронін

11

Мені дуже подобається відповідь, яку надав Кайл Кронін, але я хочу додати одне - переконайтесь, що ви вибрали відповідну клавіатуру для роботи. Якщо у вас на ноутбуці підключена зовнішня клавіатура, то є додаткове спадне поле, і вам потрібно буде зробити це для обох клавіатур (або принаймні для зовнішньої клавіатури). На екрані, зображеному нижче, відображається діалогове вікно "Вибрати клавіатуру" - я вибрав "Спільна клавіатура Mac", що є способом MacBook сказати зовнішню клавіатуру GoldTouch - за замовчуванням - це вбудована клавіатура.
Знімок екрана, що показує діалог "Вибрати клавіатуру"

Одного разу я зрозумів це - це для мене чудово працює!


9

Якщо ви використовуєте emacs через ssh-з'єднання або через машину, яка не знаходиться на локальному комп'ютері, кнопки вгору / вниз сторінки прокручують термінальний буфер - на мій досвід, не надто корисно.

Ви можете налаштувати свою сторінку вниз і кнопки вгору, щоб надіслати відповідні команди на emacs. У emacs можна прокрутити буфер emacs так:

  • Сторінка вгору: Ctl-v
  • Сторінка вниз: Esc-v

Отже, щоб термінал надсилав ці команди на emacs, дотримуйтесь вказівок вище, щоб змінити клавіші Alt для Meta. Однак замість того, щоб встановити параметр "використовувати параметр як мета", знайдіть параметри "сторінка вниз" та "сторінка вгору".

Сторінка вниз

Двічі клацніть опцію «сторінка вниз», щоб змінити її. Змініть дію на "надіслати рядок до оболонки" та введіть \ 026 як рядок. Збережи це.

Сторінка вгору

Двічі клацніть кнопку "сторінка вгору", щоб змінити її. Змініть дію на "надіслати рядок до оболонки" та введіть \ 033v як рядок. Збережи це.


7

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

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


4

Особисто у мене налаштування шапки блокування, щоб вести себе як команда в системних налаштуваннях, а потім у моєму файлі emacs init.el є:

(setq mac-command-modifier 'ctrl)

і це дозволяє мені використовувати caps lock як команду в більшості програм OSX і як контроль у emacs. працює досить добре для мене.


4

Ваша радість тільки починається. Інші хитрощі включають:

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

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


це так приголомшливо! Дякую! Я навіть не думав робити цю умовну логіку для кнопки caplock. дуже хворий!
wle8300

3

Ця нитка була започаткована 5 років тому, і про неї не згадують ns-win.elі не збирають --with-ns. Ось усі ключові прив’язки, доступні (поза коробкою) у Emacs Trunk станом на жовтень 2013 року. І, звичайно, ви можете створити свої власні. Особисто я маю одне init.elз усіма своїми ключовими прив’язками, які можна використовувати з Windows XP через Parallels на OSX, а також з OSX вродженим. Оскільки користувач може визначити свої власні комбінації клавіш, я не бачу необхідності перезавантажувати клавіатуру в системних налаштуваннях (за допомогою клавіатури Apple US), якщо тількиза допомогою клавіатури, яка не включає клавішу 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])


0

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

Особисто я не можу використовувати клавіатуру ноутбука mac через відсутність потрібної кнопки управління.

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

Щоб уникнути ергономічних проблем у Emacs, я навчився використовувати Ctrl, Alt та Cmd так само, як і Shift - натискаючи їх рукою навпроти тієї, що набирає фактичний ключ. (Тобто я просто залишаю Caps Lock таким, як є.)


0

Я встановив функцію "lock lock" для керування в системних налаштуваннях, і у своєму init.el у мене є наступне, щоб встановити команду в мета та варіант 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.