2012-03-23 18 views
52

Po ustawieniu kursora na jednym nawiasie, w jaki sposób przejść do nawiasów parowania. Dobry do pracy w emacs -nw.W przypadku emacs, jak przejść do nawiązywania (równoważenia) nawiasów

Podobnie jak % w Vim.

;; Po dostaje wskazówkę od @Lindy, @Francesco, znalazłem więcej:

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

Możliwy duplikat [Dopasowane szelki w Emacs] (http://stackoverflow.com/q/8627725/1225607) – Francesco

+0

Zobacz również 'ch RET' s-wyrażenie – phils

+0

jest również doskonałym' tryb paredta, który utrzymuje nawiasy w równowadze i pozwala manipulować ... –

Odpowiedz

47

Użyj C-M-right i C-M-left (odpowiednio backward-sexp i forward-sexp), aby przejść do początku lub końca bieżącego wyrażenia. Działa to dla par nawiasów, ale również dla prostych słów.

+6

Dzięki, znalazłem mapę ** przełączania pulpitu prawy/lewy ** przez mój pulpit. –

+5

Kto może powiedzieć nazwę polecenia ** C-M-right **? Teraz przenosi mnie do innego obszaru roboczego ** ** gnome desktop ** –

+9

@ Andrew_1510 To jest 'backward-sexp' /' forward-sexp'. Zamiast trzymać jednocześnie klawisze Ctrl + Alt + , możesz utworzyć te wiązania za pomocą 'Esc', a następnie' C- '. W ten sposób kombinacja klawiszy nie zostanie przechwycona przez gnoma i zostanie poprawnie przekazana do emacsa. – Francesco

13

Dla nawiasach klamrowych i wsporników tylko dwukrotne kliknięcie na nich załatwia sprawę.

+32

kliknięcie? za pomocą myszy? w emacs? –

+2

Kliknięcie? W emacs? Bah, mówię! :) - * (Zakładam, że OP nie używa xemacs?) * –

+1

Zakładając oczywiście GUI –

5

używam następujący małą funkcję dokładnie to (choć nie wiem, czy nie pasuje zachowanie vim jest, że nie jestem sam użytkownik 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

Wygląda na to, że chce być powiązany z "%", ponieważ będzie wstawiał wciśnięty klawisz, jeśli nie jest na paren –

7

Proponuję CMF oraz CMB, ponieważ CM-right/left są już związane z moim DE (przełącz na pulpit po prawej/lewej stronie).

4

Gorąco polecam SmartParens posiada rozległą nawigacji i manipulacji strukturami nawiasów (np. Opakowania, notowania, tagi, wsporniki, szelki zwykłych nawiasów, s-wyrażenie, etc.) ze wsparciem dla wielu języków i struktur, z łatwym dostosowywanie.

Obsługuje również dość złożone struktury, które są nazywane hybrid-s-expressions in it's documentation. Co sprawia, że ​​jest niezwykle wydajny do manipulowania kodami w językach takich jak C/C++, Java, JS itp.

Dla navigation używane są następujące.

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 

Należy zauważyć, że mapuje wiele poleceń na domyślny odpowiednik Emacsa. Gdy jest zainstalowany, po prostu przeglądaj jego funkcje (wszystkie są poprzedzone prefiksem sp-), aby uzyskać dobre wyczucie skali.

Jest dużo więcej do niego, polecam masz look at the wiki

15

Jak wspomniano w emacs wiki (http://www.emacswiki.org/emacs/NavigatingParentheses):

  • CMN naprzód-lista Przejście do przodu ponad nawias grupa

  • CMp wstecz lista Wstecz nad grupą nawiasów

  • CMf forward-s-wyrażenie Przesuń do przodu nad zrównoważonym ekspresji

  • CMb wstecznie s-wyrażenie Przesuń do tyłu nad zrównoważonym ekspresji

  • CMk kill-s-wyrażenie zabić zrównoważony wyraz naprzód

  • CM-SPC mark-sexp Umieść znak na końcu o płeć.

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

Powiązane problemy