emacs ウィンドウを上下に分けて使うことは普通のことだと思う。 (split-window)
ごくごくたまーに縦に割りたいときがある、ソースを見比べたいときとか。
でも、キーバインドなんだっけ? に始まり、(1)一度 split を止めて (2)縦割りにして (3)other-buffer に移動し (4)バッファを選択し直す。
というけっこう面倒な手順が必要になると思う。 (もしもっと簡単な方法があったら教えて欲しい)
そこでこのマクロ。横→縦→横 とトグルして split の方向を変えます。
以前貼った、ウィンドウ入れ替えと合わせて、
ごくごくたまーに縦に割りたいときがある、ソースを見比べたいときとか。
でも、キーバインドなんだっけ? に始まり、(1)一度 split を止めて (2)縦割りにして (3)other-buffer に移動し (4)バッファを選択し直す。
というけっこう面倒な手順が必要になると思う。 (もしもっと簡単な方法があったら教えて欲しい)
そこでこのマクロ。横→縦→横 とトグルして split の方向を変えます。
(defun ma:toggle-v-h-windows () "change split windows set" (interactive) (let* ((wintree (window-tree)) (winlst (nthcdr 2 (car wintree))) (h-or-v (car (car wintree))) (buflst ()) bufcnt (lcnt 1) (eflg t)) (mapcar (lambda (w) (if (not (eq (type-of w) 'window)) (setq eflg nil))) winlst) (if eflg (progn ;; get buffer list (mapcar (lambda (w) (push (window-buffer w) buflst)) winlst) (setq buflst (reverse buflst)) ;; (setq bufcnt (length buflst)) (if (> bufcnt 1) (progn (delete-other-windows) (if h-or-v (while (> bufcnt lcnt) (split-window-horizontally) ;h (setq lcnt (1+ lcnt))) (while (> bufcnt lcnt) (split-window-vertically) ;v (setq lcnt (1+ lcnt)))) ;; (mapcar (lambda (b) (switch-to-buffer b) (other-window 1)) buflst) ;; (balance-windows) )) ) (message "cannot change window.")))) ;;(define-key my-key-map "9" 'ma:toggle-v-h-windows)ちなみに僕は、my-key-map に Ctl-tab を指定してある。(最下行コメント部分)
以前貼った、ウィンドウ入れ替えと合わせて、
となる。意外と使うんですこれが。C-<tab>-0 で入れ替え C-<tab>-9 で方向変え


コメントする