Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
12
Help us understand the problem. What are the problem?
@acro5piano

CUIのEmacsからGUIのEmacsに移行するためにやったこと

この記事は.emacs Advent Calendar 2016の10日目です。

概要

Emacs を使い始めて3ヶ月目にして、 CUI の Emacs から GUI の Emacs に移行しました。

環境は Arch Linux です。

そのために必要だったこと、できるようになったことも書いています。
Linux なので、やったことは Linux のウィンドウシステムに関係があるものが大半です。

特に、現在 CUI の Emacs を使っているが、 GUI の Emacs も使いたいという方にお読みいただければ幸いです。

動機

3年くらい Vim を使っていました。
Vim では起動が速い、メモリを消費しない、 GUI の無い環境でも一貫して動作する、などの理由から、テキストエディタをターミナルで動かすことに一種の美学を感じていました。(中二病)

Emacs を使い始めた時も、同じ理由で CUI で動かしていましたt。

ですが、ブログの記事などを見ると多くの人が GUI で起動しています。
確かに GUI で起動すると何となく便利そうな感じがしました。

そんな訳で GUI の Emacs には興味があったのですが、るびきちさんという Emacs 界隈で有名な方が、下記のように仰っていたのが移行を試みる決め手になりました。

CUI 版にも根強いファンがいますが、思い切って GUI 版を使ってみましょう。
筆者も長いこと CUI 版を使っていましたが、乗り換えました。
GUI 版には CUI 版にない多彩な表現方法が使えます。

Emacsテクニックバイブル
~作業効率をカイゼンする200の技~

結論

移行して良かったです。
苦労したこともそれなりにありましたが、Emacsの真の力を見ることができました。

移行するメリット

CUI では使えないキーバインドが設定できる

M-%M-rightといった特殊なキーバインドは、CUIのEmacsでは使えません。

tty について詳しく知りませんが、tty コンソールの多くはこれらのキーが使えません。
M-% 等のキーバインドは XTermurxvt 等のターミナルでは使うことができましたが、それらのターミナルにロックアップされる上、若干使いにくい部分がありました( Fcitx のインライン入力ができないなど)。Linux のデスクトップ環境に限った話ですが。

上記のようなキーが使えないと、 Org-mode の使い勝手が格段に悪くなってしまいます。

代替案として、これらの機能を別のキーにバインドする方法が、 Org-mode の Wiki に書いてありました。

Using Org on a tty

が、これらを全て設定して覚えるのは正直面倒です。

これらのような問題は、GUIのEmacsでは解決されます。
MuhenkanSuper といった日本語キーボード特有のキーもキーボードに設定できます。

表現力が豊かになる

テキストエディタに似つかない言葉ですが、 GUI の Emacs の表現力は本当に豊かです。

下記のようなことができるようになりました。

  • 行番号をさり気なく表示する
  • Powerline で様々な情報をきれいに表示する(powerline)
  • HTMLカラーをプレビューする(rainbow-mode)
  • カラーテーマを導入する(color-theme)

カラフルなGUIのEmacs

Screenshot_2016-12-06_08-14-51.png

CUIのEmacs、これはこれで好き

Screenshot_2016-12-06_08-23-56.png

ただし、ターミナルでやっていた背景透過はできなくなりました。
できるとは思うのですが、ハードルが高いようなのでやめておきます。

ハードルが高いと言えば、フォントの導入も難しかったです。
.Xresourcesを何回も書き直しました。

そのあたりのことはこちらの記事に書きました。

Emacsで日本語フォントを個別設定

日本語入力をいい感じにする

私が CUI の時に感じていた不満は、日本語入力 ON の時にhelm-M-xなどで絞り込んでコマンド実行したい、という場合に、
日本語入力のままコマンドを打とうとしてイラッとすることが多かったです。

それを回避する方法もあるようですが、たまに切り替わらない時があったりして安定しませんでした。
※これは自分が設定できていないだけかもしれません。

C-x * とかを入力した時にfcitxをオフにする fcitx.elの導入

GUI 版の Emacs では、下記を行うと非常に快適になりました。

  • Fcitx などの日本語 IME を起動しないようにする
  • emacs-mozc を使って、 mozc-mode が有効になっているバッファのみ日本語入力状態にする

また、下記のように設定することでより快適になりました。

  • mozc-modeの時にカーソルを青くして、見分けをつけるようにする
  • C-;でmozc-modeを開始
  • C-gでmozc-modeを終了
  • いくつかのキーがmozc-modeで消えてしまうので、取り返す
;; Mozc settings
(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")

(setq mozc-candidate-style 'overlay)

(defun mozc-start()
  (interactive)
  (set-cursor-color "blue")
  (message "Mozc start")
  (mozc-mode 1))

(defun mozc-end()
  (interactive)
  (set-cursor-color "gray")
  (message "Mozc end")
  (mozc-mode -1))

(bind-key* "C-;" 'mozc-start)
(bind-key "C-g" 'mozc-end mozc-mode-map)
(bind-key "C-x h" 'mark-whole-buffer mozc-mode-map)
(bind-key "C-x C-s" 'save-buffer mozc-mode-map)

※emacs-mozcはCUIのEmacsでも使えますが、CUIのEmacsだとOSのIMEと共存させる必要があり、少々面倒です

OSのクリップボードとの連携

GUI の Emacs では、特に何も設定しなくともクリップボードの内容が OS と同期されます。 CUI 版だと、 Emacs 内でヤンクされ、他のアプリケーションに貼り付けできません。

ただこれは、 Emacs のクリップボードを OS から独立させた方が使い勝手が良いという意見もあるので、好みが分かれるかもしれません。

移行するデメリット(と思えたもの)

シェルの呼び出しが面倒

これは今でも思っています。
M-x shellM-x termを試したのですが、うまくいきませんでした。特にzshとの相性が悪い。
こみいったことをターミナルで行わなければよいのかもしれませんが。

結局、ターミナルは別のアプリケーションを入れています。

今までの画面構成として、デュアルモニタで片方はターミナル、片方はブラウザという感じで使えていたのですが、新たに Emacs が加わったことにより、2画面に収まらなくなってしまいました。

そのため、awesomeというタイル型ウィンドウマネージャを使って、ウィンドウサイズをキーボードで調節できるようにしています。

また、 Emacs 流儀に従って、なるべく多くの操作を Emacs 上で行うことにして、そもそもターミナルへの依存頻度を減らしました。

  • Magit
  • Dired, WDired
  • helm-ghq
  • counsel-git-grep

あたりを使うようになってから、ターミナルを使う頻度が減りました。

あ、でもこれ使えば M-x term を快適にできるかも・・・
Copy/Paste in emacs ansi-term shell

(追記)
term+をありがたく使わせてもらえば、なんとかなりそう。
http://tarao.hatenablog.com/entry/20121021/1350844264

背景の透過の設定が面倒

これは、 Solarized-dark テーマがいい感じに機能しているので、トントンかと。好みの問題ですし。

インプットメソッドが正常に動作しない

これは Arch Linux 特有の問題なのですが、 fcitx-mozcemacs-mozc パッケージが競合してしまいます。

なので、systemd-nspawnでArch Linuxのコンテナを作り、
その中で emacs-mozc をビルドして mozc_emacs_helper を取り出すことで解決しました。

Arch Linuxで、Systemd-nspawnによる仮想環境を構築し、Emacs-mozcをインストールする方法

多分もっと Arch Linux に詳しい人ならそんな力技しなくて良いのだと思う。

フォントの依存関係

これも面倒でした。
CUI だとターミナルの設定次第で簡単に変わるのに、一筋縄ではいきませんでした。

Macの人はもっと楽なのかもしれません。

結論

Emacs最高

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
12
Help us understand the problem. What are the problem?