在我使用的一些模式中,emacs通过自动关闭某些元素(如引号,括号)来帮助我。智能自动关闭匹配字符
不过有时候,出于习惯,我输入我自己的结束元素,最后输入())
或"""
。
如何设置emacs忽略多余的密钥?
在我使用的一些模式中,emacs通过自动关闭某些元素(如引号,括号)来帮助我。智能自动关闭匹配字符
不过有时候,出于习惯,我输入我自己的结束元素,最后输入())
或"""
。
如何设置emacs忽略多余的密钥?
编辑:我在我的.emacs中有一段时间以下,它工作正常,所以我没有想太多。正如event_jr在他的回答中指出的那样,autopairs.el包可以从相同的页面链接到我从中获得此代码的相同功能(显然还有更多)。
我在.emacs
下面的代码要做到这一点,从the emacs wiki:
(setq skeleton-pair t)
(setq skeleton-pair-alist
'((?\(_ ?\))
(?[ _ ?])
(?{ _ ?})
(?\" _ ?\")))
(defun autopair-insert (arg)
(interactive "P")
(let (pair)
(cond
((assq last-command-char skeleton-pair-alist)
(autopair-open arg))
(t
(autopair-close arg)))))
(defun autopair-open (arg)
(interactive "P")
(let ((pair (assq last-command-char
skeleton-pair-alist)))
(cond
((and (not mark-active)
(eq (car pair) (car (last pair)))
(eq (car pair) (char-after)))
(autopair-close arg))
(t
(skeleton-pair-insert-maybe arg)))))
(defun autopair-close (arg)
(interactive "P")
(cond
(mark-active
(let (pair open)
(dolist (pair skeleton-pair-alist)
(when (eq last-command-char (car (last pair)))
(setq open (car pair))))
(setq last-command-char open)
(skeleton-pair-insert-maybe arg)))
((looking-at
(concat "[ \t\n]*"
(regexp-quote (string last-command-char))))
(replace-match (string last-command-char))
(indent-according-to-mode))
(t
(self-insert-command (prefix-numeric-value arg))
(indent-according-to-mode))))
(defun autopair-backspace (arg)
(interactive "p")
(if (eq (char-after)
(car (last (assq (char-before) skeleton-pair-alist))))
(and (char-after) (delete-char 1)))
(delete-backward-char arg))
(global-set-key [backspace] 'autopair-backspace)
(define-key isearch-mode-map [backspace] 'isearch-delete-char) ;; required to fix behaviour in isearch
(global-set-key "(" 'autopair-insert)
(global-set-key ")" 'autopair-insert)
(global-set-key "[" 'autopair-insert)
(global-set-key "]" 'autopair-insert)
(global-set-key "{" 'autopair-insert)
(global-set-key "}" 'autopair-insert)
(global-set-key "\"" 'autopair-insert)
我不确定它是否只是Emacs 24功能,但electric-pair-mode
似乎按照您的要求做。
我已经测试过autopair,它的工作原理,但我会检查这一点,当我有一些空闲时间在我手上。谢谢! – vise
非常好。我的回答来自您链接到的同一个wiki页面,但我不记得*何时*我实际上已经获取了代码。从快速测试看,它看起来像autopairs.el一样好,同时提供更多功能。谢谢! – Tyler
作为autopair.el的长期用户,我可以告诉你,Emacs 24内置的电气配对支持并不差。 –
也许我错过了,但是退格“(|)”在这里并没有删除这对autopair。 autopair也有挂钩来修改配对行为。例如,我有一个为大写代码填充大括号的函数,另外还有一个函数可以处理Python的三重引号。 –