如何跳转到引用字符串的匹配(双或单)引用?


10

将光标放在一个引号上时,如何跳至配对引号?


1
我现在没有Emacs可以尝试,但我想skip-syntax-forward会这样做。
wvxvw

1
我试过(skip-syntax-forward "^\"")了可以跳到下一个双引号的符号,但它不会跳过转义的符号,例如“字符串\”不能被跳过吗?”
AhLeung

Answers:


9

M-C-f(或M-C-right)必须forward-sexp这样做。

我建议您尝试使用前缀M-C-而不是的所有知名运动命令C-

  • M-C-b(或M-C-left)给出backward-sexp
  • M-C-u(或M-C-up)给出backward-up-list
  • M-C-n(或M-C-down)给出forward-list

1
您还应提及backward-sexp绑定到M-C-b
蒂姆(Timm)

@Timm我以为很明显,一个人尝试使用带前缀的运动命令,M-C而不是C-一个人知道M-C-f。好的-我会在答案中提及。
Tobias

1
似乎forward-sexpbackward-sexp停在带引号的字符串内的空白处?
AhLeung

1

我一直很难记住的绑定forward-sexpbackward-sexp,和我想要的东西,工作更喜欢%做Vim的命令模式。在某个时候,我将其添加到配置中(文档字符串显示为parens,但它适用于任何括号或引号),现在我很满意:

;;; 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)

0

我建议将smartparens软件包用于所有此类目的。简短的介绍在这里:https : //ebzzry.io/en/emacs-pairs/


1
请在您的帖子中提供完整的答案。仅链接的响应可以发表评论,但不能给出答案。

sp-beginning-of-sexp而且sp-end-of-sexp非常接近我想要的 我希望可以将它们组合为一个函数(例如sp-matching-sexp),这样我只需要记住一个键绑定即可。也许我会尝试编写一个elisp函数。让我知道之前是否有人这样做。谢谢。
AhLeung

ebzzry.io/en/emacs-pairs/#keys (“ CMf”。sp-forward-sexp)(“ CMb”。sp-backward-sexp)但是您可以将其设置为其他值
Victor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.