Не удается повторно связать ключ Cz в xemacs - PullRequest
0 голосов
/ 02 сентября 2010

По какой-то причине, "Cz" сопоставлен с suspend-or-iconify-emacs, и я не могу заставить его привязаться к чему-то менее раздражающему.(Мне нравится использовать ctrl-z для отмены, но бездействие, по крайней мере, было бы лучше, чем приостановка каждый раз, когда я случайно нажал клавишу)

Я пытался сделать это интерактивно: M-x global-set-key, затем Set key C-z to command: undo.
M-x describe-key-briefly дает мне C-z runs the command suspend-or-iconify-emacs

Я попытался перейти в рабочий буфер и оценить: (global-set-key (kbd "C-z") 'undo) и (global-set-key "\C-z" 'undo), и это, конечно, в моем .xemacs / init.Эль файл.

Кажется, что на самом деле ничего не связывает ключ.

Это происходит в XEmacs 21.5, в фундаментальном режиме.Любые идеи о том, как решить эту проблему?

edit: Хорошо, вот хак, который обходит проблему, переопределив функцию suspend для отмены:

(defun suspend-or-iconify-emacs () (interactive) (undo))

Iбольше не могу приостанавливать emacs, но со мной все нормально.

Ответы [ 4 ]

3 голосов
/ 02 сентября 2010

Попробуйте оценить это:

(define-key global-window-system-map [(control z)] 'undo)

(при условии, что вы не запускаете XEmacs в tty-режиме, но я полагаю, что вы этого не сделаете, если хотите иконизировать: -))

Я использовал C-h b, чтобы узнать, какую * -карту нужно изменить.

3 голосов
/ 05 сентября 2010

В моем .emacs есть следующий код:

(global-set-key (kbd "C-z") 'eshell)

Запустится eshell, и все заработает.

Комбинация C-z является довольно стандартной в Unix / Linux, если вы работаете в терминале, например, с. vi, lynx или mutt и нажимает C-z, программа будет приостановлена, и вы вернетесь в оболочку. Выполнение команды 'fg' вернет программу обратно. Поскольку у Emacs есть своя оболочка, мне нравится создавать ее при нажатии C-z в Emacs.

Вы также можете добавить следующий хук, который переназначит C-z в eshell. Таким образом, нажав C-z в eshell, вы вернетесь в буфер, который редактировали.

(add-hook 'eshell-mode-hook
  (lambda ()
    (local-set-key (kbd "C-z") 'bury-buffer)))
2 голосов
/ 02 сентября 2010

Поместите это в конец вашего .xemacs / init.el:

(global-set-key (kbd "C-z") 'undo)

Или, возможно, у вас неправильно настроенная клавиатура или операционная система.

Do Ch k Cz , чтобы узнать, действительно ли xemacs получает ключ Cz .

1 голос
/ 15 июня 2011

У меня была такая же проблема с Cf.Я хотел, чтобы он отображался на isearch-forward, но вместо этого он продолжал перемещаться на один символ вперед.

Я наконец решил свою проблему, добавив

(global-unset-key [?\C-f])
(global-set-key [?\C-f] 'isearch-forward) 

Очевидно, проблема в том, что Cf (и Cz) является "реальным" ключом, то есть это то, что терминал распознает (это ASCII 0x06, 0x1a для Cz), поэтому вам нужно "? \" перед "Cf".

Этоединственное, что я получил на работу.

HTH

(РЕДАКТИРОВАТЬ: я должен отметить, что я использую emacs, а не xemacs)

...