Como pular para uma citação correspondente (dupla ou única) de uma sequência de caracteres citada?

10

Quando o cursor em um símbolo de cotação, como pular para a cotação de emparelhamento?

AhLeung
fonte
11
Agora não tenho o Emacs para tentar, mas imagino skip-syntax-forwardque faria isso.
precisa saber é o seguinte
11
Tentei (skip-syntax-forward "^\"")que pode saltar para o próximo símbolo de aspas duplas, mas não pular símbolo escapou, por exemplo, "string \" não pode ser ignorada?".
AhLeung

Respostas:

9

M-C-f(ou M-C-right) obrigado a forward-sexpfazer isso.

Eu sugiro que você tente todos os comandos de movimento conhecidos com o prefixo em M-C-vez de C-.

  • M-C-b(ou M-C-left) dábackward-sexp
  • M-C-u(ou M-C-up) dábackward-up-list
  • M-C-n(ou M-C-down) dáforward-list
Tobias
fonte
11
Você também deve mencionar backward-sexpobrigado M-C-b.
Timm
@ Timm Eu pensei que seria bastante óbvio que se tente os comandos de movimento com prefixo, em M-Cvez de C-se souber M-C-f. Ok - vou mencionar na resposta.
Tobias
11
Parece que forward-sexpe backward-sexpparar nos espaços em branco dentro de uma seqüência de caracteres citada?
precisa saber é o seguinte
1

Sempre tenho problemas para lembrar as ligações para forward-sexpe backward-sexp, e queria algo que funcionasse mais como %no modo de comando do Vim. Em algum momento, adicionei isso à minha configuração (a docstring diz parens, mas funciona para qualquer tipo de colchete ou citação), e agora estou satisfeito:

;;; PAREN-BOUNCE
;;;; originally ganked from <http://elfs.livejournal.com/1216037.html>
(defun genehack/paren-bounce ()
  "Bounce from one paren to the matching paren."
  (interactive)
  (let ((prev-char (char-to-string (preceding-char)))
        (next-char (char-to-string (following-char))))
    (cond ((string-match "[[{(<\"']" next-char) (forward-sexp 1))
          ((string-match "[\]})>\"']" prev-char) (backward-sexp 1))
          (t (error "%s" "Not an expression boundary.")))))

;;;; bindings
(global-set-key (kbd "C-%")        'genehack/paren-bounce)
(global-set-key (kbd "C-5")        'genehack/paren-bounce)
genehack
fonte
0

Sugiro usar o pacote smartparens para todos esses fins. Aqui está uma breve introdução: https://ebzzry.io/en/emacs-pairs/ .

Vencedor
fonte
11
Forneça uma resposta completa em sua postagem. Respostas somente para links são aceitáveis ​​para comentários, mas não para respostas.
Dan
sp-beginning-of-sexpe sp-end-of-sexpestão muito perto do que eu quero. Espero que eles possam ser combinados em uma função (por exemplo, sp-matching-sexp) para que eu só precise lembrar de uma combinação de teclas. Talvez eu tente escrever uma função elisp. Deixe-me saber se alguém fez isso antes. Obrigado.
AhLeung
ebzzry.io/en/emacs-pairs/#keys ("CMf". sp-forward-sexp) ("CMb". sp-back-sexp) Mas você pode defini-lo de outra forma
Victor Victor