2012-03-23 44 views
52

當光標放在一個括號上時,如何跳轉到配對的括號。良好的工作在emacs-nw用emacs,如何去配對(平衡)括號

就像在Vim。

;;得到提示後從@Lindy,@Francesco,我發現了更多:

C-M-f  Move forward over a balanced expression 
    C-M-b  Move backward over a balanced expression 
    C-M-k  Kill balanced expression forward 
    C-M-SPC put the mark at the end of the sexp. 
    C-M-n Move forward over a parenthetical group 
    C-M-p Move backward over a parenthetical group 
    ;; C-M key binding can also be done by --> ESC Control-key 

    ;;And put this to .emacs, it will highlight opening/closing parens: 
    (show-paren-mode 1) 
+0

[在Emacs匹配括號]的可能的複製(http://stackoverflow.com/q/8627725/1225607) – Francesco 2012-03-23 22:56:43

+0

參見'一章SEXP RET' – phils 2012-03-24 00:46:55

+0

還有很大' paredit'模式,保持圓括號平衡,並允許操縱... – 2012-03-24 09:04:28

回答

47

使用C-M-rightC-M-left(分別爲backward-sexpforward-sexp)轉到當前表達式的開頭或結尾。這適用於括號對,但也適用於純文字。

+6

謝謝,我發現它映射到**桌面上切換桌面右/左**。 – 2012-03-23 20:03:11

+5

誰可以告訴** C-M-right **的命令名?它現在通過** gnome desktop **將我帶到其他工作區** – 2012-03-23 20:25:29

+9

@ Andrew_1510它是'落後sexp' /'前向sexp'。您可以使用「Esc」然後「C-」生成這些鍵綁定,而不是同時按住Ctrl + Alt + 。這樣,這個組合鍵就不會被gnome捕獲,並且會被正確地轉發給emacs。 – Francesco 2012-03-23 20:36:10

13

對於括號,括號和括號只是雙擊他們的伎倆。

+32

點擊?用你的鼠標?在emacs中? – 2012-03-23 19:59:30

+2

點擊?在emacs中?巴,我說! :) *(我假設OP不使用xemacs?)* – 2012-03-23 19:59:40

+1

當然假設一個GUI – 2012-03-23 20:03:11

5

我使用的正是以下的小功能(雖然我不知道它是否Vim的行爲相匹配;我不是vim的用戶自己):

(defun mo-match-paren (arg) 
    "Go to the matching parenthesis." 
    (interactive "p") 
    (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1)) 
     ((looking-at "\\s\)") (forward-char 1) (backward-list 1)) 
     (t (self-insert-command (or arg 1))))) 
+1

這看起來像是想綁定到'%',因爲它會插入按下的鍵,如果它不在paren上 – 2016-09-09 23:00:46

7

我建議CMF和招商銀行,因爲CM右/左已經綁定到我的DE(切換到右/左側的桌面)。

4

我強烈推薦SmartParens它具有廣泛的導航和括號結構的操作(即包裝,引號,標籤,括號,括號,正則括號,sexp等)支持多種語言和結構,定製。

它也支持相當複雜的結構,它們被稱爲hybrid-s-expressions in it's documentation。這使得它非常強大的操縱C/C++,Java,JS等語言中的代碼。

對於navigation使用以下內容。

sp-forward-sexp (&optional arg)     ;; C-M-f 
sp-backward-sexp (&optional arg)    ;; C-M-b 
sp-down-sexp (&optional arg)     ;; C-M-d 
sp-backward-down-sexp (&optional arg)   ;; C-M-a 
sp-up-sexp (&optional arg)      ;; C-M-e 
sp-backward-up-sexp (&optional arg)    ;; C-M-u 
sp-next-sexp (&optional arg)     ;; C-M-n 
sp-previous-sexp (&optional arg)    ;; C-M-p 
sp-beginning-of-sexp (&optional arg)   ;; C-S-d 
sp-end-of-sexp (&optional arg)     ;; C-S-a 
sp-beginning-of-next-sexp (&optional arg)  ;; none 
sp-beginning-of-previous-sexp (&optional arg) ;; none 
sp-end-of-next-sexp (&optional arg)    ;; none 
sp-end-of-previous-sexp (&optional arg)   ;; none 

請注意,它將許多命令映射到Emacs默認等效的命令。安裝後,只需瀏覽它的功能(它們都以sp-爲前綴),以獲得它的規模感。

還有很多更給它,我建議你有一個look at the wiki