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 вместо сдвига, чтобы отобразить символ #. Что вы делаете, когда хотите набрать @?

Другие вопросы по тегам