我已經使用XCode和Netbeans,並且我注意到它們有一個自動完成引號或圓括號的功能(並且我認爲其他IDE也經常這樣做)。我不知道這個特性的名字是什麼,但是在Emacs中有沒有辦法做到這一點?是否可以在emacs中自動完成圓括號或引號?
例如,當I型
printf("
我想它自動輸入
printf("")
將光標放置在引號之間。
謝謝。
我已經使用XCode和Netbeans,並且我注意到它們有一個自動完成引號或圓括號的功能(並且我認爲其他IDE也經常這樣做)。我不知道這個特性的名字是什麼,但是在Emacs中有沒有辦法做到這一點?是否可以在emacs中自動完成圓括號或引號?
例如,當I型
printf("
我想它自動輸入
printf("")
將光標放置在引號之間。
謝謝。
我正在使用http://cmarcelo.wordpress.com/2008/04/26/a-little-emacs-experiment/的代碼來執行「電子對」。正如我在my blog中描述的那樣,其他模式在Python的三重引號字符串中存在問題。 (一個Python的特點)
如果你鍵入M-(,它將同時插入一個(和一個)和離開點;如果你然後鍵入M-),這將移動關閉點)。我經常用這個。
還有一種稱爲「paredit」的模式(可從http://mumble.net/~campbell/emacs/paredit.el獲得),它也可以用於引用以及可能的其他內容。
Paredit模式默認插入匹配閉合元素,所以在輸入的同時您將看到類似printf()
然後printf("")
的東西,並且光標將位於引號內。
autopair小模式完全符合您的要求。
我的5分錢也在這裏。
(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)
下一頁諮詢將使退格以刪除對:一個(|)B - > AB
(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-退格)即使被其他文本分隔也可以刪除匹配的文件;非常便利。
(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。
由於Autopairs似乎沒有自動刪除對,這個反向刪除對建議看起來像一個很好的補充。 – beardc 2010-10-23 13:18:00
我之前使用過這樣的宏,但我今天使用了很多不同的編輯器(emacs,vs,eclipse,pn),我不能依賴這樣的特性。相反,我內化了這種行爲,並且幾乎不需要反射地插入相應的平衡字符就可以輸入左側字符。看到我這樣做的非程序員認爲我很奇怪。 – Zano 2010-10-22 08:47:11