経緯
Atomエディタを使っていましたが動作の重さと、度々起こるエラーに辟易としてきたのでEmacsに乗り換えました。
Emacsにした理由は、Linux環境やターミナル上でも使えることと、C-a, C-eなどのカーソル移動が好みだからです。
Emacsは割と玄人向けの記事が多い気がするので、これから初めて触る人の参考になればと思います。
環境
- macOS sierra 10.12.6
- Ubuntu 16.04
macOSとUbuntuどちらでも動く環境を構築しています。
インストール
macOS
brew tap railwaycat/emacsmacport
brew install emacs-mac
Ubuntu
sudo add-apt-repository ppa:kelleyk/emacs
sudo apt update
sudo apt install emacs25
emacs —version
でemacs 25以上が入っているのが確認出来ると思います。
参考
起動
Emacsには、端末上で起動する方法とGUIとして起動する方法の2種類があります。
端末上
macの場合、単にemacs
と打てばviエディタのように端末内で起動します。
Ubuntuの場合、emacs
ではGUIで起動するのでemacs -nw
と入力します。
端末上でのちょっとした編集やリモートアクセス時などに使用します。
パッケージによっては表示がおかしくなったりするので、-q
オプションを付けて設定ファイルを読み込まずに起動すると良いかもしれません。
GUI
挙動が安定しておりGUIでしか動かないパッケージもあるので、基本的にはこちらを利用しています。
Macの場合、/usr/local/Cellar/emacs-mac/emacs-*/Emacs.app
にインストールされています。
Ubuntuの場合、アプリケーション一覧から選択するか、上記の通りemacs
と入力することで起動出来ると思います。
emacs &
とすると、引き続き端末の操作ができるのでこちらの方がいいでしょう。
MacのターミナルからGUIを起動したい場合は、
.bashrc(または .zshrc)に以下のようにエイリアスを設定します。
alias em='() { command /usr/local/Cellar/emacs-mac/emacs-25.3-mac-6.8/Emacs.app/Contents/MacOS/Emacs $@ &}'
em [ファイル名]
でGUIのEmacsがバックグラウンドで起動するようになります。
init.elについて
Emacsの設定は.emacs.d/init.el
に書き込んでいきます。
公開されているinit.el
を参考に少しずつ自分好みにカスタマイズしていくのが良いと思います。
ひとつ注意点として、パッケージをパッケージマネージャーで導入した場合(require 'xxxxx)
という記述は不要です。
起動時間の短縮につながるため、最初から書かないかuse-packageを使いましょう。
use-packageを用いることで、パッケージごとの設定を見やすくまとめる事が出来ます。
use-packageで可読性の高いinit.elを書く - Qiita
use-package — KumaROOT 0.3.0 ドキュメント
パッケージについて
パッケージ管理はCaskを用います。
Caskを用いることで依存パッケージを列挙したCask
ファイルでパッケージを管理でき、他の環境に移行しやすくなります。
Caskのインストール・使い方は以下の記事が参考になります。
Emacs Caskでパッケージ管理をしてみよう | vdeep
init.el
の上方でCaskの初期化をしますが、Homebrewとcurlとで書き方が異なります。
;; curlの場合
(require 'cask "~/.cask/cask.el")
(cask-initialize)
;; brewの場合
(require 'cask)
(cask-initialize)
ここで以下のように書くことで、両方の場合に対応できます。
(when (or (require 'cask "~/.cask/cask.el" t)
(require 'cask nil t))
(cask-initialize))
パッケージを削除する方法は見つからなかったので、.emacs.d/.cask/*/elpa/
以下の対象ディレクトリを削除しています。
(パッケージの依存関係などを考慮できないため、もっと良い方法があるのかもしません・・・。)
おすすめのパッケージはたくさんあるのですが、早い段階でhelmの扱いに慣れると良いと思います。
初心者〜初級者のためのEmacs-Helm事始め : 前編 - Qiita
設定の同期
.emacs.dを~/dotfilesディレクトリに配置し、Githubで管理しています。
初期設定をした後は、下記を実行するだけで同期が完了するため非常に楽です。
git pull
cask # パッケージを追加した場合
まとめ
Emacsはカスタマイズの自由度が高く、慣れてくる自分好みにどんどんカスタマイズ出来るのが楽しいです。
また私が気に入っているのがM-x コマンド名
でコマンドが実行できる点です。
他のエディタでは「これするのってどのショートカットキーだっけ・・・」というのがしょっちゅうあり、チートシートを書いたり、メニューバーからいちいち探したりしていましたが、このおかげで無理にショートカットを設定せずとも楽に使えます。
Helmを組み合わせることで、コマンドを曖昧にしか記憶していなくても検索できるためさらに便利です。