我曾经使用过XCode和Netbeans,并注意到它们具有自动完成引号或括号的功能(我认为其他IDE通常也会这样做)。我不知道这个功能的名称,但在Emacs中有没有办法实现这一点?
例如,当我输入
printf("
我希望它可以自动输入。
printf("")
将光标放置在引号之间。
谢谢。
我曾经使用过XCode和Netbeans,并注意到它们具有自动完成引号或括号的功能(我认为其他IDE通常也会这样做)。我不知道这个功能的名称,但在Emacs中有没有办法实现这一点?
例如,当我输入
printf("
printf("")
M-)
绑定到 move-past-close-and-reindent
,即它会打开一个新行。有没有可能只是移动到封闭的括号而不重新缩进呢? - phimuemueM-- C-M-u
可能会达到你想要的效果。 - offby1Paredit-mode默认插入匹配的闭合元素,因此在输入时,您将看到类似于printf()
然后printf("")
,光标将位于引号内。
我也想发表一下个人的看法。
(setq skeleton-pair t)
(defvar skeletons-alist
'((?\( . ?\))
(?\" . ?\")
(?[ . ?])
(?{ . ?})
(?$ . ?$)))
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\'") 'skeleton-pair-insert-maybe)
(defadvice delete-backward-char (before delete-empty-pair activate)
(if (eq (cdr (assq (char-before) skeletons-alist)) (char-after))
(and (char-after) (delete-char 1))))
backward-kill-word
(对我来说是M-backspace)删除匹配的括号,即使它们被其他文本分开;非常方便。(defadvice backward-kill-word (around delete-pair activate)
(if (eq (char-syntax (char-before)) ?\()
(progn
(backward-char 1)
(save-excursion
(forward-sexp 1)
(delete-char -1))
(forward-char 1)
(append-next-kill)
(kill-backward-chars 1))
ad-do-it))
我现在正在尝试转向使用paredit。