2012年11月6日 星期二

在tmux裡使用Emacs會遇到的一些問題

GUI版的Emacs好看是好看,但啟動時間再怎麼樣也是比純文字界面遲緩。而且KDE的工具列還得多一個Emacs佔空間。於是最後狠下心把Solarized Theme給扔了(這主題需要GUI版的Emacs才能用),裝上Tmux。但發現還有一些問題要處理:

1. 修改~/.zshrc或~/.bashrc,加上:

alias emacs='emacs -nw'
        如此一來直接在終端機輸入emacs會開啟CLI(文字界面)版本的Emacs
2. 再加上:
alias ta='if tmux attach-session -t 0;then;else tmux;fi'
        會這樣做是因為我發現如果只是平常使用,通常應該不會在Tmux裡開到一個以上的session(至少我從沒有這種需要...),而且每次detach掉還要打一長串tmux attach-session -t [number]掛回來很麻煩,乾脆弄成一開終端機只要打ta就能開tmux,而且當已經有session存在的話直接attach進去。

3. 編輯~/.tmux.conf,不存在請自行建立。
unbind C-b
set -g prefix M-C-b
bind-key k confirm-before -p "kill-window #W? (y/n)" kill-window

因為Tmux預設的prefix (C-b)會跟Emacs相衝,最後找來找去發現大概只有M-C-b (Ctrl-Alt-B)這個binding沒有相衝問題,而且在其他主機上用Tmux也不會太難以習慣。

然後kill-window我改成prefix + k,比較符合Emacs在kill buffer時的使用習慣。

4. 編輯.emacs,加入
;;解決tmux下無法切換buffer以及一些key-binding的問題
(global-set-key (kbd "C-x M-[ d") 'previous-buffer)
(global-set-key (kbd "C-x M-[ c") 'next-buffer)
(global-set-key (kbd "M-[ c") 'forward-word)
(global-set-key (kbd "M-[ d") 'backward-word)
如此key-binding問題會少一點(苦笑)

5.下載xclip-mode,丟到~/.emacs.d/lisps/裡後,~/.emacs加上:
;; xclip-mode
(load "~/.emacs.d/lisps/xclip-1.0.el")
(define-minor-mode xclip-mode
  "Minor mode to use the `xclip' program to copy&paste."
  :global t
  (if xclip-mode
      (turn-on-xclip)
    (turn-off-xclip)))
(xclip-mode t)
可以解決X11與Emacs剪貼簿共用的問題。

6. 換到文字界面的Emacs後,其餘還發現有部份Org-mode裡原本可以使用的key-binding突然變得不能用了(例如Shift+[Arrow],尤其Super鍵是在X11裡定義的,除非經過麻煩設定,不然tty或Terminal裡是無法辨識這個鍵的),這問題請參考Org-mode的官方說明文件:http://orgmode.org/manual/TTY-keys.html ,通常Org-mode裡會出問題的key-binding這裡都有其他按法。

————————————————————————————

裝上Tmux,並換到CLI版的Emacs,優點在於:
  1. Emacs啟動速度變快了
  2. 桌面上的視窗變少了,一個Terminal emulator就可以解決一堆事情。
缺點?嗯...
  1. 滑鼠快被我荒廢了wwwwwww

0 個回應: