2012-03-23 8 views
52

Quando il cursore è su una parentesi, come saltare alle parentesi di associazione. Buono a lavorare in emacs -nw.Con emacs, come andare alle parentesi di accoppiamento (bilanciamento)

Proprio come % in Vim.

;; dopo ha ottenuto suggerimento da @Lindy, @Francesco, ho trovato più:

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

Eventuali duplicati di [parentesi corrispondenza in Emacs] (http://stackoverflow.com/q/8627725/1225607) – Francesco

+0

Vedere anche 'Ch a RET' sexp – phils

+0

c'è anche grande' modalità paredit' che mantiene le parentesi equilibrate e consente di manipolare ... –

risposta

47

Utilizzare C-M-right e C-M-left (rispettivamente backward-sexp e forward-sexp) per andare all'inizio o alla fine dell'espressione corrente. Funziona per coppie di parentesi, ma anche per parole semplici.

+6

Grazie, ho trovato la mappa su ** cambia desktop destra/sinistra ** dal mio desktop. –

+5

Chi può dire il nome del comando di ** C-M-right **? Adesso mi porta in un'altra area di lavoro da ** gnome desktop ** –

+9

@ Andrew_1510 È 'backward-sexp' /' forward-sexp'. Invece di tenere contemporaneamente Ctrl + Alt + , è possibile produrre questi binding di tasti usando 'Esc' quindi' C- '. In questo modo, la combinazione di tasti non verrà catturata da gnome e verrà correttamente inoltrata a emacs. – Francesco

13

Per parentesi, bretelle e le staffe solo doppio clic su di essi fa il trucco.

+32

facendo clic? con il tuo mouse? in emacs? –

+2

Cliccando? In emacs? Bah, dico! :) - * (Suppongo che gli OP non utilizzino xemacs?) * –

+1

Presumendo ovviamente una GUI –

5

Io uso il seguente piccola funzione proprio per questo (anche se non so se sia o non corrisponde il comportamento di vim, io non sono un utente vim me):

(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

Sembra che voglia essere associato a '%' mentre inserisce il tasto premuto se non è su un paren –

7

suggerisco CMF e la CMB, come CM-destra/sinistra sono già legati al mio DE (passa al desktop a destra/a sinistra).

4

Io raccomando altamente SmartParens ha una navigazione estesa e la manipolazione di strutture parentetiche (ad esempio, wrapping, virgolette, tag, parentesi, parentesi graffe, parentesi, ecc.) Con supporto per molte lingue e strutture, con facilità personalizzazione.

Supporta anche strutture abbastanza complesse, che sono indicate come hybrid-s-expressions in it's documentation. Ciò lo rende estremamente potente per la manipolazione del codice in linguaggi come C/C++, Java, JS, ecc.

Per navigation vengono utilizzati quanto segue.

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 

Nota che esegue il mapping di molti comandi all'equivalente predefinito di Emacs. Quando viene installato, basta sfogliare le sue funzioni (sono tutte prefissate con sp-) per avere un buon feeling per le sue dimensioni.

C'è molto di più ad esso, vi consiglio di avere un look at the wiki

15

Come accennato in emacs wiki (http://www.emacswiki.org/emacs/NavigatingParentheses):

  • CMn forward-list Spostare in avanti sopra una parentesi gruppo

  • CMp elenco indietro Torna indietro su un gruppo parentetico

  • CMF previsionali sexp Spostare in avanti sopra un'espressione equilibrata

  • CMB backward-sexp Spostare indietro sopra un'espressione equilibrata

  • CMK kill-sexp Uccidi espressione equilibrata in avanti

  • CM-SPC mark-sexp Mettere il marchio alla fine o f il sexp.

https://superuser.com/questions/677516/how-do-i-jump-to-the-opening-or-closing-paren-brace-in-emacs

Problemi correlati