首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Emacs中启用paredit时,Emacs箭头键不能正常工作

在Emacs中启用paredit时,Emacs箭头键不能正常工作
EN

Stack Overflow用户
提问于 2012-01-16 21:47:28
回答 2查看 2.5K关注 0票数 2

目前,我的.emacs中有这样的功能,它在Linux中工作得很好:

代码语言:javascript
复制
;; paredit                                                                       
;; this is from somewhere else on Stackoverflow                                  
;; deals with curly brackets matching and stuff                                  
;; I edited the answer a little bit                                              

(defmacro setup-paredit (func-name mode-map)                                     
  `(defun ,func-name ()                                                          
     (define-key ,mode-map                                                       
       (kbd "DEL") 'paredit-backward-delete)                                     
     (define-key ,mode-map                                                       
       (kbd "{") 'paredit-open-curly)                                            
     (define-key ,mode-map                                                       
       (kbd "}") 'paredit-close-curly)                                           
     (modify-syntax-entry ?\{ "(}")                                              
     (modify-syntax-entry ?\} "){")                                              
     (modify-syntax-entry ?\[ "(]")                                              
     (modify-syntax-entry ?\] ")[")                                              
     (modify-syntax-entry ?~ "'   ")                                             
     (modify-syntax-entry ?, "    ")                                             
     (modify-syntax-entry ?^ "'")                                                
     (modify-syntax-entry ?= "'")))                                              

(defmacro setup-paredit-mode (func-name mode-map mode-hook)                      
  `(progn (setup-paredit ,func-name ,mode-map)                                   
          (add-hook ',mode-hook ',func-name)                                     
          (add-hook ',mode-hook 'enable-paredit-mode)))                          

;; probably doing lots of things wrong but at least this seems to work well      
(setup-paredit-mode setup-c++-paredit c++-mode-map c++-mode-hook)               
(setup-paredit-mode setup-slime-repl-paredit slime-repl-mode-map slime-repl-mod\
e-hook)                                                                          
(setup-paredit-mode setup-slime-paredit slime-mode-map slime-mode-hook)         
(setup-paredit-mode setup-clojure-paredit clojure-mode-map clojure-mode-hook)   
(setup-paredit-mode setup-emacs-paredit emacs-lisp-mode-map emacs-lisp-mode-hoo\
k)                                                                               
(setup-paredit-mode setup-css-paredit css-mode-map css-mode-hook)

但是Mac中的最后一位使箭头键产生以下输出:

代码语言:javascript
复制
[C [A [D [A [B [D [C [B [D [B [D]]]]]]]]]]]

C-x C-c时另一件奇怪的事

代码语言:javascript
复制
Symbol's function definition is void: switch-to-buffer-in-tab

我终于用C-x C-z杀了它。

如果我在;; probably...之后注释掉最后一部分的话,这种情况就不会发生,所以问题可能就在那里。我该如何着手解决这个问题?

编辑

我找到了。只需复制粘贴那里的代码就行了。按下箭头键给了我这个:

代码语言:javascript
复制
# ESC [ ⇧A ESC [ ⇧B ESC [ ⇧C ESC [ ⇧D #

作为我的新手,我不知道如何“适当地调整上面给出的代码”。(那支箭还在做什么?)

编辑2

至少,C-c C-x问题似乎已经通过以下.emacs代码以某种方式解决了:

代码语言:javascript
复制
;; Fix Mac arrow keys                                                            
(if (not window-system);; Only use in tty-sessions.                              
     (progn                                                                      
      (defvar arrow-keys-map (make-sparse-keymap) "Keymap for arrow keys")       
      (define-key esc-map "[" arrow-keys-map)                                    
      (define-key arrow-keys-map "⇧A" 'previous-line)                            
      (define-key arrow-keys-map "⇧B" 'next-line)                                
      (define-key arrow-keys-map "⇧C" 'forward-char)                             
      (define-key arrow-keys-map "⇧D" 'backward-char)))

当paredit处于活动状态时,箭头键仍然不能工作。

编辑3

我要补充的是,所有这些都发生在航站楼内。我不确定GUI中是否还会出现这种情况,因为不知怎么的,我的.emacs导致Aquamacs不显示任何窗口。

箭头键在Emacs中工作得很好,但在-nw模式下却不行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-17 00:43:47

终于起作用了。在终端首选项中,在“设置”>“高级”>“仿真”下,我将Declare terminal as:设置为vt100

我曾经尝试过这样做,但是事实证明,在再次启动Emacs之前,需要关闭终端窗口,否则它仍然会使用当前的设置。

现在的缺点是Emacs是B&W,它将查看其他仿真设置是否有效。

编辑

xterm-256color (默认的)工作正常,颜色也很好。格里尔。所有这些都是因为某个教程(我忘了是什么)告诉我将终端仿真设置为rxvt。哈哈哈哈。

至少我希望这能对将来的人有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2016-03-25 19:48:23

请尝试这一点,我假设您将能够解决相同的chsh -s /bin/bash

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8886738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档