天天看點

Emacs中關于括号的操作

關于括号

  1. 如何自動插入雙括号

    開啟`electric-pair-mode`這個minor mode後,插入左括号會自動補全右括号, 而删除一方括号不會删除另一個.

    (electric-pair-mode 1)      
    預設補全的括号與各個major-mode的syntax table有關(可用通過describe-syntax檢視). 要定義自己的括号清單可用編輯`electric-pair-pairs`
    (setq electric-pair-pairs '(
                                (?\" . ?\")
                                (?\{ . ?\})
                                ) )      
    此外也可以定義自己的括号補全函數
    (if (region-active-p)
        (let (
              (p1 (region-beginning))
              (p2 (region-end))
              )
          (goto-char p2)
          (insert rightBracket)
          (goto-char p1)
          (insert leftBracket)
          (goto-char (+ p2 2))
          )
      (progn
        (insert leftBracket rightBracket)
        (backward-char 1) ) )
    )
    
    (defun insert-pair-paren () (interactive) (insert-bracket-pair "(" ")") )
    (defun insert-pair-bracket () (interactive) (insert-bracket-pair "[" "]") )
    (defun insert-pair-brace () (interactive) (insert-bracket-pair "{" "}") )
    
    (defun insert-pair-double-straight-quote () (interactive) (insert-bracket-pair "\"" "\"") )
    (defun insert-pair-single-straight-quote () (interactive) (insert-bracket-pair "'" "'") )
    
    (defun insert-pair-single-angle-quote () (interactive) (insert-bracket-pair "" "") )
    (defun insert-pair-double-angle-quote () (interactive) (insert-bracket-pair "" "") )
    (defun insert-pair-double-curly-quote“” () (interactive) (insert-bracket-pair "“" "”") )
    (defun insert-pair-single-curly-quote‘’ () (interactive) (insert-bracket-pair "‘" "’") )
    
    (defun insert-pair-corner-bracket「」 () (interactive) (insert-bracket-pair "「" "」") )
    (defun insert-pair-white-corner-bracket『』 () (interactive) (insert-bracket-pair "『" "』") )
    (defun insert-pair-angle-bracket〈〉 () (interactive) (insert-bracket-pair "〈" "〉") )
    (defun insert-pair-double-angle-bracket《》 () (interactive) (insert-bracket-pair "《" "》") )
    (defun insert-pair-white-lenticular-bracket〖〗 () (interactive) (insert-bracket-pair "〖" "〗") )
    (defun insert-pair-black-lenticular-bracket【】 () (interactive) (insert-bracket-pair "【" "】") )
    (defun insert-pair-tortoise-shell-bracket〔〕 () (interactive) (insert-bracket-pair "〔" "〕") )      
  2. 如何删除一個括号自動删除另一個比對括号

    需要安裝名為`autopairs`的package

  3. 如何高亮括号

    開啟show-paren-mode

    (show-paren-mode 1)      
    show-paren-mode有兩種高亮括号的方式:
    (setq show-paren-style 'parenthesis) ; 隻高亮括号
    (setq show-paren-style 'expression) ; 高亮整個括号内的内容      
  4. Key Command Purpose
    【Ctrl+Alt+←】 backward-sexp Move to previous sibling (move to the (beginning of) previous sexp unit)
    【Ctrl+Alt+→】 forward-sexp Move to next sibling (move to the (end of) next sexp unit)
    【Ctrl+Alt+↑】 backward-up-list Move to parent (move to the (beginning of) outer paren pair)
    【Ctrl+Alt+↓】 down-list Move to first child (move into the (beginning of) first inner paren pair)