Emacs "ことはじめ" 私の事例


こんにちは、落合です。

これは、 TECHSCORE Advent Calendar 2016 TECHSCORE BLOG の25日目の記事です。

Emacs を使おうとしてその良さを体験する前に、使うことを断念した方は結構いらっしゃるのではないでしょうか?
私も過去に何回か使い始めようとして、断念した経験があります。

「 Emacs とは、エディタではなく環境」 をググったりすると沢山でてきますが、その理由は例えば、

  • メールを読む
  • Web サイトをブラウジングする
  • Twitter を利用する

など、エディタ用途以外のことも柔軟にカスタマイズ出来るからだと思います。
公式の文書などでは見つかりませんでしたが、使えば使うほどそれは納得できます。

そういうわけで、100人いれば100人、用途も設定も異なります。
この記事は、”私の場合はこうした” という一つの事例になりますが、何かのお役に立てれば嬉しいです。

私が Emacs を使う主な理由

  1. Unix のシェルの操作を Emacs モード で使っていて、そのキーバインドに慣れていたので Emacs を使いたかった。
  2. Linux , Mac , Windows の異なる OS 間で、無料で且つ共通のエディタが欲しかった。

特に 2. について、 Emacs の設定や、操作感を統一したいと思っていました。
その思いを胸に、Emacs を使い始めたわけですが、いろいろ工夫する必要があり、断念しては再トライを最初の頃は繰り返していました。

Emacs は、インストールしたてのデフォルト状態だと、便利どころか、苦痛でしかないと私は感じています。
ですのでカスタマイズをし始めるのですが、いくつかの壁にぶち当たってしまいました。

ぶち当たった壁

  1. 多用するキー入力が物理的にヘンタイ過ぎる!
  2. インストールしたてのデフォルトの状態では、エディタとして非常に使いにくい!
  3. 設定をカスタマイズしようと思ったら、 Emacs Lisp が括弧だらけで、よくわからない!
  4. 異なる OS 環境で、さくっと導入(設定ファイルのコピペ程度で)したいけど、難しい!

上記の壁について、”私の場合はこうした” をざっくりご紹介していきます。

1.多用するキー入力が物理的にヘンタイ過ぎる!

  • Control キー
  • Alt キー ( Emacs では Meta キーとして利用する)

は間違いなく多用することになります。特に Control キーの物理的な配置の改善は必須です。

Control キーを A キー の左に配置するのが常套手段です。
私の場合は、 HHKB (こちらの記事参考) を購入してハードウェア的に解決しました。

これで、

  • Conttrol キーは、左手の小指
  • Alt キーは、右手の小指

で押しています。

また、高価なキーボードを購入しなくてもソフトウェア的にキーボードのキー配置を変更することも可能ですので、その場合はググってみてください。

2. インストールしたてのデフォルトの状態では、エディタとして非常に使いにくい!

例えば、以下のような機能は、 Emacs インストール後、比較的早い段階で、使いにくいと感じたので改善しました。

◯よく使う機能なのに、キーバインドに割当てが無いもの

文字の右側から左へ削除する

これで、 Linux / Unix のシェル(Emacs モード)と同じ動作になりますよね。

Redo を C-M-/ で利用可能にする

長い1行を、自動折り返し する/しない を C-c l で切り替えする

◯キーバインドに割り当てられてはいるが、非常に使いづらい機能

分割したウィンドウサイズの幅を縮める

デフォルトでは、

ですが、こんなの一回一回押せますか? 正気の沙汰じゃないですよね......。

私の場合は、win-switch.el を追加導入して Emacs Lisp で拡張させました。

◯当たり前のように有功にしておきたい機能

常時行数表示させる

これらは、私の場合の一例ですが、デフォルトだと、”そんなこともパッと出来ないのか?" が結構あります。

3.設定をカスタマイズしようと思ったら、 Emacs Lisp が括弧だらけで、よくわからない!

とりあえず Web などの文献に出てくる、 init.el のサンプルなどで何が書かれているか位を把握できれば良いと思います。

◯ざっくり理解しておきたい Emacs Lisp の作法

関数をロードする

関数呼び出し

Emacs に標準で組み込まれている関数はインストール後いきなり(require しなくても)利用可能です。

関数の引数について(とてもざっくりとは......)

新しく関数を定義する

変数に値を設定する

特定のタイミングで呼び出される関数を登録する

フック変数で、様々なタイミングが指定可能ですので、この辺 を参考にしてください。

キーバインド割当て

いろいろな書き方がありますが、とりあえず、 global-set-key と、kbd 関数 を組み合わせた以下の書き方だけ知っておけば良いと思います。

上記あたりをざっくりと理解しておけば、当面困りませんでした。

4.異なる OS 環境で、サクッ と導入(設定ファイルのコピペ程度で)したいけど、難しい!

どの OS でも、できる限り init.el の内容を同じにし、Emacs のインストールの直後に .emacs.d/init.el にペリっと貼りつけて起動するだけで必要なものがインストールされて、カスタマイズされた Emacs が立ち上がるように工夫しました。

◯ Emacs バージョン24 以上を利用する

はじめから、 パッケージ管理や、テーマのカスタマイズに便利なものが利用できるので、設定ファイルがとてもすっきりします。

Emacs を拡張するための Emacs Lisp を、起動時に自動インストールさせる

Emacs バージョン24 以上であれば、 package.el が最初から利用できて以下の感じで簡単に実現できます。

◯日本語入力システムを統一する

  • Linux , Mac , Windows の各 OS の標準の日本語入力システムが異なる。
  • 日本語入力中に、コマンドを入力しても効かない。

上記の問題を解消するために、 Emacs 上の日本語入力システムを OS とは独立させることにしました。

Daredevil SKK(DDSKK) の導入

これで、 Emacs を起動後、 C-x C-j とすれば DDSKK が利用できます。
OS 側の日本語入力システムとは独立していますので、OS 側での変換は使わないようにしました。

◯フォントを統一する

残念ながら、日本語フォントは、 Linux , Mac ,Windows で最初から共通でインストールされているものは無いと思います。
しかし、ここでも Emacs 上は統一したかったので、
Ricty Diminished を各 OS で先にインストールしておいて、以下のように設定しました。

◯どうしても OS 間で異なる設定を分岐させたい

私の場合は、前述の通り、" init.el にペリっと設定を貼りつけて起動するだけ" を実現したいので極力利用しませんが、OS 毎に設定を分岐させたい場合は、
init-loader.el は非常に便利ですので使ってみてはいかがでしょうか?

最後に

機種依存無しに、 " init.el にペリっと設定を貼りつけて起動するだけ" で、 Emacs のカスタマイズが一発で完了してしまえるのは、なかなか素敵です。
TRAMP( Windows は、 Plink ) などで多段で頑張って SSH して利用していたシーンも回数が減るかもしれません(環境を接続先につくることが簡単なので)。

私の場合は、特異なキーバインドに慣れるというコストは低かったのですが、まったくの初心者だと、そのコストも高いはずです。
今となっては、 Emacs は無くてはならない存在ですが、こうやってまとめてみても、やはり導入コストは総じて高いと思います。

init.el を自分好みに鍛えて、環境に慣れてしまうと本当に使い易くなりますので、頑張ってみてくださいね。

あ、 DDSKK まで常用すると、 Control , Meta に加えて、Shift まで押しまくることになるので、左右の小指 が鍛えられて 小指マッチョ(謎) になって素敵です!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です