Emacs вопрос - ключ хеша
У меня есть ноутбук Mac, и я подключаюсь к серверу под управлением Linux. Поскольку Alt+3 уже привязан в EMACS к команде, я не могу вставить хеш-символ в файл. Я пробовал следующее решение, которое я нашел в Интернете:
(global-unset-key (kbd "C-3"))
(global-set-key (kbd "C-3") '(lambda() (interactive) (insert-string
"#"))) //I know that C is for CTRL not Alt - I have tried with
M-3 instead as well
и некоторые другие, но ни один, кажется, не работает. Можете ли вы сказать мне любой другой способ, которым я мог бы ввести хеш-знак (#) в файл.
Асо попробовал (не сработало):
(fset 'insertPound "#")
(global-set-key (kbd "M-3") 'insertPound)
Спасибо!
6 ответов
Я предполагаю, что у вас есть клавиатура Mac UK, поэтому Shift-3 стоит £. На большинстве других клавиатур Shift-3 - это #, как говорили другие.
Чтобы обойти это, нужно поменять источник входного сигнала на австралийский, с той лишь разницей, что Shift-3 теперь #, а Alt-3 - £ (или оставьте как привязку emacs)
В качестве источника входного сигнала использовались Системные настройки-> Язык и текст-> Источник входного сигнала
В более поздних версиях OSX (OSX 10.11 определенно, но было бы раньше). Параметром "Источник ввода" является "Системные настройки" -> "Клавиатура" -> "Источник ввода". По умолчанию будет отображаться клавиатура Великобритании, чтобы увидеть больше, нажмите "+" в нижней части списка и добавьте австралиец
Причина, по которой я предпочитаю это, а не добавление кода в emacs, заключается в том, что Shift-3 - это # для всех приложений, например, включая Xcode/Eclipse, поэтому мне не нужно переключать клавишу в соответствии с приложением или в соответствии с тем, нахожусь ли я на клавиатуре США или на Windows/Linux и т. д.
С http://jimbarritt.com/non-random/2010/11/07/typing-the-pound-or-hash-key-in-emacs-on-uk-macbook
Вводим фунт или хеш (#) в emacs на британском Macbook:
Проблема с OS X и британской клавиатурой заключается в том, что на клавиатуре фунта на самом деле стоит £. Чтобы получить "#", вы должны нажать Alt+3
Конечно, в emacs ключ alt - это мета-ключ, который перехватывается emacs. Простая функция ниже, вставленная в ваш файл.emacs, должна правильно сопоставить ключи.
;; Allow hash to be entered
(global-set-key (kbd "M-3") '(lambda () (interactive) (insert "#")))
Я знаю, что уже немного поздно, и ответ принят. Однако я только что перешел с Linux на MacOS с британской клавиатурой, и у меня возникла та же проблема.
Примечание: я использую emacs отсюда: http://emacsformacosx.com/. Ниже могут быть разные для Carbon Emacs/Aquamacs и т. Д.
global-set-key
Метод, описанный выше, хорошо, если вам просто нужно #
подписать, но что, если вам также нужно получить доступ к €
персонаж? (Что такое Alt-3 на британской клавиатуре)
Решением для меня было добавить это в мой файл инициализации:
(setq ns-right-alternate-modifier (quote none))
Это удаляет привязки emacs для правой клавиши alt / option.
Вы можете увидеть все доступные варианты с
M-x customize-group RET ns RET
Кредит идет на http://emacsformacosx.com/tips
Многие решения, приведенные здесь и в других местах, помогают печатать #
в обычном буфере, но они не заставляют его работать как обычное нажатие клавиши; в частности, он прервет инкрементный поиск, что затруднит написание макросов, которые работают с комментариями Python, или C #include
с, например. Так что лучше всего преобразовать ключ намного раньше, чтобы он действовал как очередное нажатие клавиши.
Я обнаружил, что добавление этой команды в вашу конфигурацию Emacs работает очень хорошо:
(define-key key-translation-map (kbd "M-3") (kbd "#"))
... и удалить все (global-set-key...)
попытки.
Если - как и я - вы переключаете свои клавиши-модификаторы, Opt ma сопоставляется с Hyper, поэтому я просто использую:
(define-key key-translation-map (kbd "M-3") (kbd "#"))
(define-key key-translation-map (kbd "M-£") (kbd "#"))
(define-key key-translation-map (kbd "H-3") (kbd "#"))
(define-key key-translation-map (kbd "H-£") (kbd "#"))
(define-key key-translation-map (kbd "S-3") (kbd "#"))
(define-key key-translation-map (kbd "S-£") (kbd "#"))
Мое решение (обратите внимание на escape-последовательность):
;; Even though we may have set the Mac OS X Terminal's Alt key as the emacs Meta key ...
;; ... we want to be able to insert a '#' using Alt-3 in emacs as we would in other programs
(fset 'insertPound "#")
(define-key global-map "\M-3" 'insertPound)
Как сказал С. Лотт, это S-3, чтобы вставить знак числа (или хэш, фунт, октотроп).
Почему вы хотите использовать мета-модификатор, чтобы вставить его? Кроме того, что M-3 связано с вашей настройкой? Вы можете получить его, нажав C-h-k, а затем нажав комбинацию клавиш.
Предполагая, что вы имеете в виду Alt
правильно и что он устанавливает бит модификации Meta, который вы можете засунуть
(global-unset-key (kbd "M-3"))
в ваш .emacs
и eval, чтобы отключить это.
Все "нормальные" ключи связаны с self-insert-command
, Модификатор shift просто преграждает "ключ", который используется для вызова этой функции, поэтому вы получаете # вместо 3, когда выполняете S-3.
Кроме того, я до сих пор не понимаю, почему вы используете Alt
вместо сдвига, чтобы отобразить символ #. Что вы делаете, когда хотите набрать @?