Emacs вопрос - ключ хеша - PullRequest
       8

Emacs вопрос - ключ хеша

32 голосов
/ 20 октября 2010

У меня ноутбук 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 ]

37 голосов
/ 24 января 2011

С 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 "#")))
29 голосов
/ 20 октября 2010

Я предполагаю, что у вас есть клавиатура Mac UK, поэтому Shift - 3 составляет £.На большинстве других клавиатур Shift - 3 - это #, как говорили другие.

Способ, которым я могу обойти это, состоит в том, чтобы изменить источник входного сигнала на австралийский, единственное отличие состоит в том, чточто Shift - 3 теперь # и Alt - 3 равно £ (или оставьте как привязку emacs)

В качестве источника входного сигнала использовались Системные настройки-> Язык и текст-> Источник входного сигнала
В более поздних версиях OSX (безусловно, OSX 10.11, но было бы раньше) В качестве источника входного сигнала используется Системные настройки-> Клавиатура-> Источник входного сигналаклавиатура Великобритании, чтобы увидеть больше, нажмите + в нижней части списка и добавьте австралийский

. Причина, по которой я предпочитаю это, а не добавление кода в emacs, заключается в том, что Shift - 3 - это # ​​для всех приложений, например, включая Xcode / Eclipse, поэтому мне не нужно переключать клавишу в соответствии с приложением или в соответствии с тем, нахожусь ли я на клавиатуре США или на Windows / Linux и т. Д.

14 голосов
/ 12 февраля 2014

Я знаю, что уже немного поздно, и ответ принят.Однако я только что перешел с Linux на MacOS с британской клавиатурой, и у меня возникла та же проблема.

Примечание : я использую emacs отсюда: http://emacsformacosx.com/. Нижеможет отличаться для Carbon Emacs / Aquamacs и т. д.

Приведенный выше метод global-set-key подойдет, если вам просто нужен знак #, но что, если вам также необходим доступ к символу ?(Это Alt-3 на британской клавиатуре)

Решением для меня было добавить это в мой файл инициализации:

(setq ns-right-alternate-modifier (quote none))

Это удаляет привязки emacs для правой альтернативы / опции

Вы можете просмотреть все доступные опции с помощью

M-x customize-group RET ns RET

Кредит переходит на http://emacsformacosx.com/tips

2 голосов
/ 12 августа 2017

Многие решения, приведенные здесь и в других местах, работают для ввода # в обычном буфере, но они не заставляют его работать как обычное нажатие клавиши; в частности, он прервет инкрементальный поиск, что затруднит написание макросов, которые имеют дело с комментариями Python или, например, C #include s. Поэтому лучше преобразовать ключ намного раньше, чтобы он действовал как очередное нажатие клавиши.

Я обнаружил, что добавление этой команды в вашу конфигурацию Emacs работает очень хорошо:

(define-key key-translation-map (kbd "M-3") (kbd "#"))

... и удалите все попытки (global-set-key...).

Если - как и я - вы переключаете свои клавиши-модификаторы, Opt ⌥ сопоставляется с 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 "#"))
1 голос
/ 25 апреля 2011

Мое решение (обратите внимание на 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)
0 голосов
/ 20 октября 2010

Как сказал С.Лотт, S - 3 - это вставить числовой знак (или хэш, фунт, октотроп).

Почему вы хотите использовать мета-модификатор для его вставки?Кроме того, что M - 3 связано с вашей настройкой?Вы можете получить его, выполнив C - h - k , а затем нажав комбинацию клавиш.


Предполагая, что вы ссылаетесьна Alt и что он устанавливает бит мета-модификации, который вы можете вставить

(global-unset-key (kbd "M-3"))

в .emacs и проверить его, чтобы это не происходило.

Все «нормальные» клавишисвязаны с self-insert-command.Модификатор сдвига просто преграждает «ключ», который используется для вызова этой функции, так что вы получаете # вместо 3, когда делаете S-3.

Кроме того, я до сих пор не понимаю, почему вы используете Alt вместо Shift для отображения символа #.Что вы делаете, когда хотите набрать @?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...