7

したがって、私は通常、Emacs で 3 つのバッファーを開いています。

  1. 私が書いている実際のコードのための 1 つのバッファ。
  2. 上記のコードの単体テスト用の 1 つのバッファー。
  3. 単体テストの結果を表示する 3 番目のバッファー。このバッファは、単体テストを実行すると、他の 2 つのバッファの下になりますC-x SPACE

C-x oこの 3 番目のバッファーを無効にして、押したときにバッファー 1 とバッファー 2 の間でのみ切り替えられるようにするにはどうすればよいですか? 現在、バッファ 1、バッファ 2、バッファ 3、バッファ 1 の順に切り替えています。具体的には、C-x oバッファ 1 と 2 の間でのみ切り替えたいと考えています。

ありがとうございました。

4

2 に答える 2

7

これに対する一般的な解決策 (見える可能性があります) は、次のようになります。

(defvar ignore-windows-containing-buffers-matching-res '("\\*Help")
      "List of regular expressions specifying windows to skip (if window contains buffer that matches, skip)")

(defadvice other-window (before other-window-ignore-windows-containing activate)
  "skip over windows containing buffers which match regular expressions in 'ignore-windows-containing-buffers-matching-res"
  (if (and (= 1 (ad-get-arg 0)) (interactive-p))
      (let* ((win (next-window))
             (bname (buffer-name (window-buffer win))))
        (when (some 'identity (mapcar '(lambda (re)
                                        (string-match re bname))
                                     ignore-windows-containing-buffers-matching-res))
          (ad-set-arg 0 2)))))

スキップするバッファ名に一致する正規表現になるように変数をカスタマイズします。

于 2009-10-15T21:25:13.640 に答える
5

トレイの答えは、あなたが望むことを正確に行います(少なくともそうなるようです。私は試していません)。より一般的な解決策はswbuffswbuff-xまたは自分のswbuff-advice. 3 つすべてに関する情報は、Emacs Wiki の swbuff ページにあります。

于 2009-10-16T15:20:44.373 に答える