錯誤試行

PCや生活の試行錯誤の成果を報告するブログ

xyzzyのbuffer-opposite(現在のバッファを反対側のウィンドウにも表示)をEmacsでも使う

WindowsEmacsenであるxyzzylispで「現在のバッファを(表示位置もそのままに)分割した反対側のウィンドウにも表示する」というコードをどこかで拾ったが、これが「現在の表示位置をそのままにして文書の別のところを見に行きたい」という際に通常だとウィンドウが分割されている場合「C-x 1 C-x 2」とする必要があるところを簡単に切り替えができて便利なためEmacsでも使えないかと常々思ってきた。ある時久し振りにxyzzyを使う機会があったため、試しにxyzzyの設定ファイルであるsiteinit.lからコードをコピーして.emacsにペーストしたところ問題なく動作した。どこかで拾ったこのコードはbuffer-oppositeで検索しても見つからないためここで共有しておきたいと思う。
elispは知らないが、改めて見てみるとやっていることは他のウィンドウを消してウィンドウを分割するというシンプルな内容のようだ。以下ではC-c bをキーバインドに設定している。

;; buffer-opposite 現在のバッファを分割した反対側のウィンドウにも表示する
(defun buffer-opposite()
  (interactive)
  (delete-other-windows)
 (split-window))
(global-set-key (kbd "C-c b") ' buffer-opposite) ;キーバインドをC-c bとする

以下は実際の操作画面。emacs-w3m日本語版のinfo画面を表示した状態からC-c bでウィンドウを2分割させ、別ウィンドウに移動してスクロールさせた後にC-c bで元のウィンドウに同じ位置を表示させている。