読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

Emacsをタブブラウザ化

Emacs
Emacsはいくつもバッファを内部に持ちますが、切り替えがややしにくいですしどんなバッファが残っているか見た目ではわからないのでタブで一覧が見れる表示にします。これに伴ってウェブブラウザのようにタブの切り替えがCtrl+Tabで出来るようにします。 ※ターミナル内での起動(emacs -nw)ではターミナル自体が Ctrl+Tab を認識できないのでこのタブ移動は無理です。 tabbar.elを使います。最新版は2.0ですがドキュメントは1.3の方が多いですし大きな変更はないので今回は1.3でやります。 まずはダウンロード http://sourceforge.net/projects/emhacks/files/ 解凍してemacsのロードパスにファイルを移動します。デフォルトでは/usr/share/emacs/site-lisp/になっています。 $ sudo mv tabbar.el /usr/share/emacs/site-lisp/ 次に.emacs に設定を書き込みます。 $ emacs -nw ~/.emacs
;; グループ化せずに*scratch*以外のタブを表示
(require 'cl)
 (when (require 'tabbar nil t)
    (setq tabbar-buffer-groups-function
	    (lambda (b) (list "All Buffers")))
    (setq tabbar-buffer-list-function
          (lambda ()
            (remove-if
             (lambda(buffer)
	       (unless (string= (buffer-name buffer) "*shell*")
		 (find (aref (buffer-name buffer) 0) " *")))
             (buffer-list))))
    (tabbar-mode))

;; 左に表示されるボタンを無効化
(setq tabbar-home-button-enabled "")
(setq tabbar-scroll-left-button-enabled "")
(setq tabbar-scroll-right-button-enabled "")
(setq tabbar-scroll-left-button-disabled "")
(setq tabbar-scroll-right-button-disabled "")

;; 色設定
 (set-face-attribute
   'tabbar-default-face nil
   :background "gray90") ;バー自体の色
  (set-face-attribute ;非アクティブなタブ
   'tabbar-unselected-face nil
   :background "gray90"
   :foreground "black"
   :box nil)
  (set-face-attribute ;アクティブなタブ
   'tabbar-selected-face nil
   :background "black"
   :foreground "white"
   :box nil)

;; 幅設定
  (set-face-attribute
   'tabbar-separator-face nil
   :height 0.7)

;; Firefoxライクなキーバインドに
(global-set-key [(control tab)]       'tabbar-forward)
(global-set-key [(control shift iso-lefttab)] 'tabbar-backward)
;; -nw では効かないので別のキーバインドを割り当てる
(global-set-key (kbd "C-x n") 'tabbar-forward)
(global-set-key (kbd "C-x p") 'tabbar-backward)

;;F4ボタンで切り替え
(global-set-key [f4] 'tabbar-mode)
これで新たにファイルなど開いてバッファが増えるとタブが増えます。 タブを消すときは「C-x k」などでkill bufferしてください。 ソース: tabbar.elの設定 Emacs をタブブラウザ化する (Vine Linux 4.2)