ほぼ無知識の状態からEmacsを使えるようにする。

Emacsはエディタでなんか気になったので使ってみたくなった。

環境

  • windows10
  • centos(仮想マシン)
  • vagrant
  • vartualbox
  • putty

仮想マシンの構築はドットインストールの開発環境構築動画を見ればすぐにできる。今回は仮想マシンのcentosでEmacsを使えるようにしていく。余談だがドットインストールの通りに環境構築していった場合 vim(smallバージョン) がインストールされている。

Emacsのインストール

仮想マシンにEmacsをインストールしていく。基本はこのサイトのとおりにやるのがはやい。↓
CentOS7に最新のEmacsを導入する方法 | vdeep

筆者も上のサイトのやり方をみてインストールした。しかし以外にはまってしまうことがあるのでcentosのroot権限とPATHの知識は知っておいたほうがいい。なのでこの記事をみてほしい。↓
Progateを使ってターミナルのコマンドラインを習得する

centosにemacsをインストールするにはunixコマンドでやっていくのでコマンド関係もある程度しっておいたほうがよい。unixコマンドってなんだよって人も上のリンクにいろいろかいてるので見て欲しい。とりあえずこの画像があればイメージはつかめる。青枠にあるosではすべてunixコマンドがつかえる。BSD系から作られているmac osもunixコマンドが使えるようになっている
unixとは

emacsのインストール中になんか不安になりそうな文字がだらだらながれてくるけど、最終的にemacsはインストールできて動いているのでたぶん大丈夫だったんだろうというかんじ・・・

Emacsのコマンド

Emacsのコマンドはみてもようわからんので、ドットインストールで動画をみながらやったほうがはやい。でも一応かいとく。


#起動
emacs

#終了
C-x C-c

#画面の見方
Window: 画面
Buffer: タブ
Mode Line: 今開いているBufferの情報
Mini Buffer: コマンドの関数情報

#ファイル操作
Open: C-x C-f
Save: C-x C-s
Save as: C-x C-w

#移動
左右: C-f/C-b
上下: C-p/C-n
行頭,行末: C-a/C-e
ファイルの先頭/最後: M-< M-> Mはメタキーescかalt

#編集
開始: C-@
コピー: M-w
カット: C-w
貼り付け: C-y(ank)
行末までカット: C-k
削除: C-d カーソルの下
Undo: C-/
Redo=: C-G C-/

#検索/置換
前夫検索: C-s 進む
後方検索: C-r 戻る

#置換: M-%
y yes
n no
! all
q exit

#分割
現在のウインドウを閉じるC-x 0
全ての分割解除: C-x 1
上下分割: C-x 2
左右分割: C-x 3
ウインドウ間を移動: C-x o

#Bufferリスト
C-x C-b: 今ひらいているBufferを表示

#Bufferリストの操作
n,p: 上下移動
d: delete flag
s: save flag
u: undo
x: run
表示 .現在の *変更が保存されていない


emacsのテーマを変更する

Emacsを使っているとminibufferと言われるところの文字が見にくすぎてイライラすることがある。

emacsはカレントディレクトリに .emacs というファイルを作ることによって設定を変更できる。

最初はようわからんけど、とりあえずカレントディレクトリに .emacs というファイルを作る。(ここ重要)。ためしにつくってみよう。せっかくEmacsをインストールしたので、こう作る↓

$ emacs .emacs

テーマを変えるにはこの新しく作ったファイルに構文を書き込む→それで次から起動するときにこのファイルが読み込まれテーマが変わるという仕組みらしい。

emacs テーマ

(load-theme ‘manoj-dark t)と記述しているが manoj-dark という部分がテーマ名になる。emacs25 あたりからテーマが設定可能になったらしい。デフォで何種類かテーマが用意されているので 「emacs テーマ」 とかで検索をかけてみるといい。

Emacsのキーバインドを変更する

Emacsを使っていると人によってはEscキーが遠すぎてイライラすることがある。そういうときに元々あるキーコマンドを変更できる。ネットの情報だとこいうのはキーバインドと言われているらしい

Emacsにもともとわりあてられているキーバインドというものを上書きすることによって変更することができる。上書きするには関数定義する必要がある。これは後述する。最初のうちはもともとあるキーバインドは上書きできないのでは?とおもっていたのだが実際にやってみた結果上書きにで変更できることを確認した。

キーバインドの確認と変更

キーバインドの確認は Emacsがたちあがっている状態である必要がある。次にM-x とおしたあとに describe-bindings と入力する。
emacsキーバインド

上書きするには.emacsファイルをカレントディレクトリに作成して、そこに関数を記述する

(define-key global-map [(キー)] ‘キー名)のように記述する。キーバインドの確認は先ほども申し上げたがM-x → describe-bindingsと入力するとキーバインドの一覧が表示される。そこにはキー名が書かれているのも確認できる。.emacsファイルに関数を記述しておけばemacs起動時にファイルが読み込まれて設定が反映される仕組みになっている。

画像ではコピーコマンドをC-cに変更している。一応いっておくがM-xのMはメタキーでALTキーとかESCキーのことなので注意する。

と思いきやあとあとわかったが C-c は他のコマンドの組み合わせでよく使うので変更できないようになっているらしい。というよりも確認した結果、動くファイルと動かないファイルがあることがわかった。テキストファイルでは動作することを確認。.rbファイルでは動作しない・・・とほほ。

ということで [(S c)]にした・・・。SはShiftキーで一応Shiftキーも使える。

rectangle mode

  • C-x → spaceでrectangle modeが開始する
  • C-x → r → tでstring rectangle modeが開始する(矩形挿入ができる)

矩形挿入をうまく行うには。まず最初にrectangole modeで挿入したい範囲を選択して次にstring rectangle modeに移行する

shell

Emacs内でshellを立ち上げる

emacs shell

emacsで知っておいたほうがよい機能としてemacsを開いたままshellが立ち上げられるというものがあります。3種類のshellがありそれぞれの起動方法は以下のとおりです。

shell (M-x shell → Enterで起動)
term (M-x term → Enterで起動)
eshell (M-x eshell → Enterで起動)

shellはコマンドの履歴を上下でおうことはできませんが、カーソルを上下に動かせます。eshellはカーソルは動かすことはできませんがコマンドの履歴を上下のキーでおうことができます。コマンドを頻繁につかう場合はeshellがよいかと思います。

shellの起動は M-x とうって入力してもよいのですが、shellやeshellをキーバインドに登録しておいたほうがよいでしょう。

Emacsで手軽にshellのコマンドを入力する

さきほどはEmacsでshellを立ち上げる方法を紹介しましたが、shellを立ち上げずにshellコマンドを実行できる機能もあります。これをやるには M-! を使います

M-! #shellコマンドの入力モードになる

shellコマンド入力状態にして pwd を実行すると現在いるディレクトリのパスを表示させることができます
shell対話モード

初期化ファイル

~.emacs、~/.emacs.el、~/.emacs.d/init.el の順番に検索されます。このうち複数のファイルがあったときはひとつしか読み込まれないので、どれかひとつに決めておく必要があります。~/.emacs および ~/.emacs.el のファイルは、ホームディレクトリ直下に設置する必要があります。

このファイルにキーバインドの設定やパッケージの読み込み構文を記述します。

パッケージ

Emacsには便利なパッケージがたくさんあります。そのなかでも非常に便利だと思われるものを記事にしておきました。パッケージの導入方法や使い方は以下の記事をごらんください

補足事項

Emacsで非常に重要な点でGUIのEmacsと端末で起動するEmacsがあります。端末とはターミナル全般のことをいっています。ターミナルでEmacsを使用している場合一部のキーバインドが認識されません。端末の上で動くemacsは、キーイベントを受け取るのでなく、文字コードを受け取るからだそうです。といってもほとんどのキーが認識されないかというとそうでもないので、詳しくは「Emacs 端末」で検索するとよいと思います。

まとめ

インストール作業が一番だるい。意味ふなエラーがでたら。pathが通ってないかroot権限でやってないかのどっちかなので、とりあえず適当にやってみることをすすめる。pathを通すの言葉の意味がよくわからないんだったら、コマンドを使える場所を追加するみたいなイメージでとらえとけばいいと思う。

pathの通し方は上のリンクに書いているから困ったら見て。