2011-12-25 8 views
18

GNU Emacsには、同じ色のコードでマッチする括弧をハイライトする機能があります。Emacsの中括弧

しかし、括弧で囲まれたコードが本当に長く、いくつかのネストされたifなどの場合、この機能は本当に便利ではありません。括弧の1つが表示されないからです。

は、私のカーソルが満たされた場合、私は、その後、{ブレースを見る/ジャンプするために私を可能にするいくつかの機能を持ちたい、と考え}ブレース上にある場合、私は、次のことを持っている

for(int i=0; i< N; ++i) 
{ 
    /*Long code*/ 

} 

言います将来のコーディングのために}ブレースに戻ってください。

これはEmacsで可能ですか?

+0

も参照してください。http://stackoverflow.com/questions/9845661/with-emacs-how-to-go-to-the-pairing-balancing-parentheses –

答えて

25

これは実際には非常に標準的なバインディングです。C-M-fC-M-bは、デフォルトでは前後に移動します。ほとんどのモードでは、C-M-fはあなたの前方の括弧に進み、C-M-bは後方の括弧に戻ります。これは引用符のようなものにも、ほぼ同じように機能します。

これらのバインディングは、既にC-fC-bをナビゲーションに使用すると覚えやすいです。 (あなたがしなければ、あなたはすべきです)。キャラクターが表情で動くようになった(モードに依存する)キャラクターによって前後に動くのと同じです。

+0

まさに私が探していたもの。ありがとう! – smilingbuddha

+0

2つの括弧の間に十分な距離がある場合は、メッセージやナビゲーションを表示するだけでなく、2つの部分(2番目の部分に重複バッファを持つ)で画面を分割し、両方の括弧を表示する必要があります。 – aartist

1

backward-sexpは私が使用しているものです。 ESC-leftにバインドされています。それでは、あなたがどこにいたのかを知るためのESC-権利

+2

私の場合(cモードの場合)、これらの機能はそれぞれMCfとMCbに結びついた – Daimrod

1

最初に、このオプションについて知っていることは、まだない場合はblink-matching-paren-distanceです。 sexpが非常に大きい場合は、オプション値を大きくする必要があります。そうでない場合は、括弧で区切っても間に合わず、不一致がなければ不一致が表示されます。

blink-matching-parenblink-matching-paren-on-screenの両方が0以外の数字であることを確認することができるのは、nilです。次に、開始デリミタを表示するには、終了デリミタを削除して、もう一度入力します。あなたがそれを挿入すると、オープニングは明らかになります。

1

お試しmic parenお試しください。これは現在の画面の外にあっても一致する括弧のコードを示しています。

1
(defun px-match-paren (arg) 
    "Go to the matching paren if on a paren; otherwise insert <key>." 
    (interactive "p") 
    (cond 
    ((char-equal 41 (char-before)) (backward-list 1)) 
    ((char-equal 125 (char-before)) (backward-list 1)) 
    ((and 
    (char-equal 123 (char-before)) 
    (char-equal 10 (char-after))) 
    (backward-char 1) (forward-list 1)) 
    ((looking-at "\\s\(") (forward-list 1)) 
    ((looking-at "\\s\)") (backward-list 1)) 
    (t (self-insert-command (or arg 1))))) 

<key>そう<key>(VI族のような多くは「%」)を挿入し、あなたがポイントを前またはそれの後であれば、このコマンドは開閉ブレースを切り替えることができますバインド魔女する

私もforward-sexpC-<key>をバインドC-S-<key>backward-sexpですので、ファイル内の関数をすばやく操作できます。