Emacs на Mac OS X - для Alt или Command?


18

Это официально. Я люблю ненавидеть Emacs в Mac OS X.

Независимо от того, что я делаю, я получаю шип в сторону.

Когда я пытаюсь писать, \используя Alt+ Shift+, 7я получаю ошибки, потому что Alt== Мета в Emacs. Если я связываю ключ Metaс Commandключом, я обхожу эту ошибку. Все хорошо. Пока я не хочу использовать Meta-Tab. Теперь я внезапно пытаюсь Command- Tabуйти от Emacs в какое-то другое приложение.

Я в ярости в данный момент, кто-нибудь может помочь мне решить эту проблему? Я бы предпочел, если бы я мог, Altкак meta, не установить aquamacs.org и не использовать fnключ.

О, кстати, я использую шведский язык.

РЕДАКТИРОВАТЬ 1:

Первое решение: добавить (global-set-key [C-tab] [M-tab])в ~/.emacs. Это будет привязывать Meta-tabк Control-tabвместо. Не то, что я полностью хотел, но должно работать.

Ответы:


12

Смотрите варианты под M-x customize-group ns

Там вы можете настроить поведение клавиш-модификаторов. Я установил правильный alt на «Без модификатора» - это то же поведение, что и на клавиатурах ПК с Alt-Gr.

Еще одна настройка, которая мне нравится, - сбросить обе клавиши alt и использовать functionвместо нее клавишу alt.


Работает для меня ... вы не должны говорить спасибо, но спасибо.
Профессор Фалькен

10

У меня также была эта проблема в течение многих лет! Совсем недавно я снова попробовал Emacs в OS X. Я наконец исправил проблему, добавив в свой .emacs следующее: (Это с Emacs 24.3)

(when (eq system-type 'darwin)
  (setq mac-right-option-modifier 'none))

Спасибо тебе за это! Теперь я могу снова в emacs! :)
Петр

4

По этой причине некоторые люди, которых я знаю, всегда покупают компьютеры Mac с клавиатурой США.

Я тоже ругался на Emacs (также и на шведском), и единственное решение, которое я нашел, - это использовать расширенную раскладку США, но с моей шведской клавиатурой. Я провел несколько лет с клавиатурой США в качестве основной клавиатуры, чтобы я мог переключаться более или менее, не задумываясь.

Если вы не хотите идти по пути переключения макетов, OS X Emacs на шведском языке просто болезненна.


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


Это должно было быть исправлено к настоящему времени, можно подумать ...
Zolomon

2

Это не очень элегантно, но вы можете использовать клавишу Escape для мета и сохранить клавишу Alt для специальных символов. Например, ESC xвместо M-x.

Но согласитесь с molbdnilo, большинство неамериканских клавиатур отстой для программирования. Однажды я работал в Финляндии пару недель, и первым делом я переключил КБ на США. Даже слепой набор текста был проще, чем выяснить, как печатать те символы, которые вам так часто нужны в языках программирования. (ну, на самом деле первое, что я сделал, это переключил язык; к счастью, я знал, как это сделать с помощью мышечной памяти :-)


3
Да, это почти как если бы самые распространенные синтаксисы были изобретены американцами. ;-)
molbdnilo

0

У меня возникла та же проблема, когда я перешел с Linux на macOS, и я решил ее, добавив следующие коды в мой файл конфигурации emacs:

;; check OS type
(cond
 ((string-equal system-type "windows-nt") ; Microsoft Windows
  (progn
    (message "Microsoft Windows")))
 ((string-equal system-type "darwin") ; Mac OS X
  (progn
    (setq mac-option-key-is-meta nil)
    (setq mac-command-key-is-meta t)
    (setq mac-command-modifier 'meta)
    (setq mac-option-modifier nil)
    (message "Mac OS X")))
 ((string-equal system-type "gnu/linux") ; linux
  (progn
    (message "Linux"))))

Обратите внимание на эту часть кодов, которые прокомментировали «Mac OS X», она поменяет optionключ с commandключом в приложении emacs, но в целом, commandвы все равно commandможете использовать, command+tabкак и раньше.

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