终端下使用emacs出问题

Vim、Emacs配置和使用
回复
haiyuan_victor
帖子: 10
注册时间: 2010-09-15 7:37

终端下使用emacs出问题

#1

帖子 haiyuan_victor » 2012-02-29 19:29

原来一直在gui下面使用emacs,现在因为某些原因切换到终端下面,用的是urxvt,可是一些原来定义的快捷键不能用了,如下:
原来我把C-i定义成了delete-other-windows,可是现在在终端下面就是输入字符i
原来我把C-enter定义成了宏,是在当前行下新增一行,不会切断当前行,可是现在就变成了直接按enter的功能
原来C-shift-enter是在当前行上面新增一行的宏,可是现在按了也没有反应!
是不是在终端下面这几个键被截获了?还是别的什么原因
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: 终端下使用emacs出问题

#2

帖子 Fermat618 » 2012-02-29 19:39

终端中可用的组合键比gui下少,没什么奇怪的。
C-i看上去有点问题。如果它表现是一个tab键的作用,那还算正常。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
头像
老蒋
帖子: 52
注册时间: 2007-01-21 15:48
来自: 四川

Re: 终端下使用emacs出问题

#3

帖子 老蒋 » 2012-02-29 19:40

haiyuan_victor 写了:原来一直在gui下面使用emacs,现在因为某些原因切换到终端下面,用的是urxvt,可是一些原来定义的快捷键不能用了,如下:
原来我把C-i定义成了delete-other-windows,可是现在在终端下面就是输入字符i
原来我把C-enter定义成了宏,是在当前行下新增一行,不会切断当前行,可是现在就变成了直接按enter的功能
原来C-shift-enter是在当前行上面新增一行的宏,可是现在按了也没有反应!
是不是在终端下面这几个键被截获了?还是别的什么原因
[lisp]
(defun fix-up-xterm-control-arrows ()
(define-key function-key-map "\e[1;5A" [C-up])
(define-key function-key-map "\e[1;5B" [C-down])
(define-key function-key-map "\e[1;5C" [C-right])
(define-key function-key-map "\e[1;5D" [C-left])
(define-key function-key-map "\e[5A" [C-up])
(define-key function-key-map "\e[5B" [C-down])
(define-key function-key-map "\e[5C" [C-right])
(define-key function-key-map "\e[5D" [C-left]))

(add-hook 'after-make-console-frame-hooks
(lambda ()
(fix-up-xterm-control-arrows)
(xterm-mouse-mode 1) ; Mouse in a terminal (Use shift to paste with middle button)
(mwheel-install)))
[/lisp]
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: 终端下使用emacs出问题

#4

帖子 Fermat618 » 2012-02-29 19:56

老蒋 写了:
haiyuan_victor 写了:原来一直在gui下面使用emacs,现在因为某些原因切换到终端下面,用的是urxvt,可是一些原来定义的快捷键不能用了,如下:
原来我把C-i定义成了delete-other-windows,可是现在在终端下面就是输入字符i
原来我把C-enter定义成了宏,是在当前行下新增一行,不会切断当前行,可是现在就变成了直接按enter的功能
原来C-shift-enter是在当前行上面新增一行的宏,可是现在按了也没有反应!
是不是在终端下面这几个键被截获了?还是别的什么原因
[lisp]
(defun fix-up-xterm-control-arrows ()
(define-key function-key-map "\e[1;5A" [C-up])
(define-key function-key-map "\e[1;5B" [C-down])
(define-key function-key-map "\e[1;5C" [C-right])
(define-key function-key-map "\e[1;5D" [C-left])
(define-key function-key-map "\e[5A" [C-up])
(define-key function-key-map "\e[5B" [C-down])
(define-key function-key-map "\e[5C" [C-right])
(define-key function-key-map "\e[5D" [C-left]))

(add-hook 'after-make-console-frame-hooks
(lambda ()
(fix-up-xterm-control-arrows)
(xterm-mouse-mode 1) ; Mouse in a terminal (Use shift to paste with middle button)
(mwheel-install)))
[/lisp]
楼主没说C-up等出问题了呢,是C-retern不能用。
我现在终端模拟器的情况是,Enter发送的是^M, C-enter发送的是^J
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
头像
老蒋
帖子: 52
注册时间: 2007-01-21 15:48
来自: 四川

Re: 终端下使用emacs出问题

#5

帖子 老蒋 » 2012-02-29 21:09

Fermat618 写了:
老蒋 写了:
haiyuan_victor 写了:原来一直在gui下面使用emacs,现在因为某些原因切换到终端下面,用的是urxvt,可是一些原来定义的快捷键不能用了,如下:
原来我把C-i定义成了delete-other-windows,可是现在在终端下面就是输入字符i
原来我把C-enter定义成了宏,是在当前行下新增一行,不会切断当前行,可是现在就变成了直接按enter的功能
原来C-shift-enter是在当前行上面新增一行的宏,可是现在按了也没有反应!
是不是在终端下面这几个键被截获了?还是别的什么原因
[lisp]
(defun fix-up-xterm-control-arrows ()
(define-key function-key-map "\e[1;5A" [C-up])
(define-key function-key-map "\e[1;5B" [C-down])
(define-key function-key-map "\e[1;5C" [C-right])
(define-key function-key-map "\e[1;5D" [C-left])
(define-key function-key-map "\e[5A" [C-up])
(define-key function-key-map "\e[5B" [C-down])
(define-key function-key-map "\e[5C" [C-right])
(define-key function-key-map "\e[5D" [C-left]))

(add-hook 'after-make-console-frame-hooks
(lambda ()
(fix-up-xterm-control-arrows)
(xterm-mouse-mode 1) ; Mouse in a terminal (Use shift to paste with middle button)
(mwheel-install)))
[/lisp]
楼主没说C-up等出问题了呢,是C-retern不能用。
我现在终端模拟器的情况是,Enter发送的是^M, C-enter发送的是^J
[lisp]
(define-key function-key-map "\e[D" [return])
(define-key function-key-map "\e[A" [C-return])
[/lisp]
haiyuan_victor
帖子: 10
注册时间: 2010-09-15 7:37

Re: 终端下使用emacs出问题

#6

帖子 haiyuan_victor » 2012-03-01 9:09

老蒋 写了:
Fermat618 写了:
老蒋 写了:
haiyuan_victor 写了:原来一直在gui下面使用emacs,现在因为某些原因切换到终端下面,用的是urxvt,可是一些原来定义的快捷键不能用了,如下:
原来我把C-i定义成了delete-other-windows,可是现在在终端下面就是输入字符i
原来我把C-enter定义成了宏,是在当前行下新增一行,不会切断当前行,可是现在就变成了直接按enter的功能
原来C-shift-enter是在当前行上面新增一行的宏,可是现在按了也没有反应!
是不是在终端下面这几个键被截获了?还是别的什么原因
[lisp]
(defun fix-up-xterm-control-arrows ()
(define-key function-key-map "\e[1;5A" [C-up])
(define-key function-key-map "\e[1;5B" [C-down])
(define-key function-key-map "\e[1;5C" [C-right])
(define-key function-key-map "\e[1;5D" [C-left])
(define-key function-key-map "\e[5A" [C-up])
(define-key function-key-map "\e[5B" [C-down])
(define-key function-key-map "\e[5C" [C-right])
(define-key function-key-map "\e[5D" [C-left]))

(add-hook 'after-make-console-frame-hooks
(lambda ()
(fix-up-xterm-control-arrows)
(xterm-mouse-mode 1) ; Mouse in a terminal (Use shift to paste with middle button)
(mwheel-install)))
[/lisp]
楼主没说C-up等出问题了呢,是C-retern不能用。
我现在终端模拟器的情况是,Enter发送的是^M, C-enter发送的是^J
[lisp]
(define-key function-key-map "\e[D" [return])
(define-key function-key-map "\e[A" [C-return])
[/lisp]
我添加了上面的试了一下,还是不行!
另外在我的urxvt下面,我按C-v,然后再按enter键,出来的是^M
按C-v,再按C-enter,出来的也是^M
haiyuan_victor
帖子: 10
注册时间: 2010-09-15 7:37

Re: 终端下使用emacs出问题

#7

帖子 haiyuan_victor » 2012-03-01 9:21

我在想是不是跟emacs没啥关系,是不是要用到urxvt的URxvt.keysym.Meta-Control-0x61: \033<M-C-a>这样的功能?
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

Re: 终端下使用emacs出问题

#8

帖子 Fermat618 » 2012-03-01 21:29

haiyuan_victor 写了: 我添加了上面的试了一下,还是不行!
另外在我的urxvt下面,我按C-v,然后再按enter键,出来的是^M
按C-v,再按C-enter,出来的也是^M
Emacs处在终端模拟器后面,你这个情况Emacs中是没法分辩Enter和C-enter的,上面的语句不用试,肯定是没用的。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
回复