かっこを含めるように領域を設定します


9

ポイントまたはアクティブな領域から始めて、次の一連の括弧を含めるために(1つのキーストローク/コマンドで)すばやく「拡張」するにはどうすればよいですか?

私が最初に始める場合:(|ポイントを意味します)

(defn foo [x] (+ x |42))

または、次のように開始した場合:(<および>選択した領域を囲みます)

(defn foo [x] (+ x <42>|))

終わりたい

(defn foo [x] <(+ x 42)>|)

回答:


10

expand-region.elを使用します

領域を拡張すると、選択した領域が意味単位で増加します。必要なものが選択されるまで、キーを押し続けます。

例:

(setq alphabet-start "abc def")

カーソルがcにある場合、単語abc全体をマークすることから始まり、次に引用符abc defの内容に展開し、次に引用符全体「abc def」に展開し、次にsexp setq alphabet-start "abcの内容に展開します。 def」、そして最後にセックス全体に。

次のように設定できます。

(require 'expand-region)
(global-set-key (kbd "C-=") 'er/expand-region)

拡大しすぎると、負の接頭辞でリージョンを再度縮小できます。


1
参考expand-regionまでに、リストをすぐにマークする特定の関数を呼び出しer/mark-outside-pairsます。
ナニー

4

expand-region別の答え(私が投票している)で提案されているように試してみることに同意します。

ただし、関連する組み込みコマンドに慣れていない場合に備えて:

C-M-u, backward-up-list
C-M-SPC, mark-sexp

リージョンがない最初の例ではC-M-u C-M-SPC、囲んでいるリストをマークするために使用できます。すでに選択されたリージョンがある場合、これらのコマンドはそれを拡張します。したがって、42が選択されてヒットC-M-uすると、選択範囲がリストの先頭まで後方に拡張されますが、閉じかっこは含まれません。

だから、何かが存在しない状態でのようにexpand-region私が当たると考えC-g、その後、任意の現在の選択をキャンセルしC-M-u、あなたが望むのように、多くの括弧として戻ってC-M-SPCマークに


3

アクティブな領域の場合hlispyではあなたが望むことをします。最近の紹介記事をご覧ください。

最初のケースでは、する必要がありM-m hます。

更新:すべてのオプション lispy

で始まります:

(defn foo [x] (+ x ~42|))

ここで、~はマーク(領域の開始)を|示し、ポイント(領域の終了)を示します。

  1. hあなたと一緒に:

    (defn foo [x] |(+ x 42)~)
    
  2. lあなたと一緒に:

    (defn foo [x] ~(+ x 42)|)
    
  3. ではk、あなたは(と元に戻せ取得しますj):

    (defn foo [x] (+ ~x| 42))
    
  4. 2kまたはkkあなたが得る:

    (defn foo [x] (~+| x 42))
    
  5. dあなたと一緒に:

    (defn foo [x] (+ x |42~))
    
  6. ではd>、あなたは(と元に戻せ取得します<):

    (defn foo [x] (+ |x 42~))
    
  7. と一緒にd2>またはd>>あなたが得る:

    (defn foo [x] (|+ x 42~))
    
  8. mあなたと一緒に:

    (defn foo [x] (+ x 42|))
    

ただ、領域がアクティブである場合、要約するとhjkl 地域を移動する矢印があります。>ポイントの方向に1つの意味単位で領域を拡大します。<領域をポイントの方向に1意味単位だけ縮小します。mマークを非アクティブにします。iリージョンの最初の要素を選択し、dポイントとマークを交換します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.