引用符で囲まれた文字列の一致する(二重または単一)引用にジャンプする方法は?


10

1つの引用記号にカーソルを合わせると、ペアの引用にジャンプする方法は?


1
今はEmacsを試す必要はありませんが、そうするskip-syntax-forwardことはできると思います。
wvxvw 2017

1
(skip-syntax-forward "^\"")次の二重引用符記号にジャンプできるか試しましたが、エスケープ記号がスキップされません。たとえば、 "string \"はスキップできませんか? "
AhLeung

回答:


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私は1のプレフィックスで、モーションコマンドを試みることはなく明らかであろうと思ったM-Cの代わりのC-1を知っていればM-C-f。わかりました-私は答えでそれを述べます。
トビアス

1
どうやら、引用符で囲まれた文字列内の空白forward-sexpbackward-sexp停止するようですか
AhLeung 2017

1

私はいつものバインディングを覚える手間持っているforward-sexpbackward-sexp、私はより多くのように働いた何かたかった%Vimのコマンドモードで行います。ある時点で、これを自分の構成に追加しました(docstringには括弧が記載されていますが、ブラケットや引用符のいずれでも機能します)。

;;; 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私が欲しいものにとても近いです。これらを1つの関数(例sp-matching-sexp:)に組み合わせて、1 つのキーバインドを覚えるだけでよいことを願っています。多分私はelisp関数を書こうとするでしょう。以前に誰かがそれをしたかどうか教えてください。ありがとう。
AhLeung 2017

ebzzry.io/en/emacs-pairs/#keys ( "CMf"。sp-forward-sexp)( "CMb"。sp-backward-sexp)しかし、異なる値を設定できます
Victor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.