Emacsのmultiple-cursorsの導入から使い方までチュートリアル

Emacsのパッケージmultiple-cursorsを使ってみたくなりましたが、ネットの情報をみても俺すげー系の記事しかなく大変苦しみましたので、丁寧に解説をしていきたいと思います。

出だしでなんですが、multiple-cursorsを実用面では微妙なので少々期待外れになる可能性もあります。それではきちんと初心者の方にもわかるように説明していきたいと思います。

環境

Windows上に構築した仮想開発環境centosに導入されたEmacsで説明していきます。Emacsのバージョンは以下のとおりです。

$ emacs --version
GNU Emacs 25.3.1

centosへのEmacsの導入方法は省略させていただきます。

前提知識

Emacsへmultiple-cursorsを導入をはじめる前に最低限しっておかなければならない知識としてホームディレクトリというものを理解しているか確認しておく必要があります。ホームディレクトリは以下の記号であらわすことができます

~/ ←ホームディレクトリをあらわす記号

multiple-cursorsの導入

初期化ファイルの作成

まずはホームディレクトリに初期化ファイルを作成する必要があります。このファイルに必要な情報を書いておかないとmultiple-cursorsの導入ができません。またキーバインドなどの情報もこのファイルに記述しておくことによって起動時にファイルを読み込んで反映させることができます。

ホームディレクトリに.emacsというファイルを作成します。初期状態だと存在しないはずですが、一応確認しておいてもよいでしょう。

$ sudo find / -name .emacs #.emacsファイルを検索する
/home/vagrant/.emacs
$ vi .emacs #ホームディレクトリで作成してください

エディタで.emacsファイルを開いたら、以下の構文を記述し、保存して一旦ファイルをとじてください。”melpa”とかいてあると思うのですがここからパッケージを読みこまないとmultiple-cursorsを発見することができません。したのほうの記述は multiple-cursorsの読み込みとキーバインドが書かれています。

(require 'package) 
(add-to-list 'package-archives '("melpa" ."https://melpa.org/packages/") t) 
(package-initialize)

(require 'multiple-cursors) 
(global-set-key (kbd "C-S-c C-S-c")'mc/edit-lines)
(global-set-key (kbd "C->")'mc/mark-next-like-this) 
(global-set-key (kbd "C-<")'mc/mark-previous-like-this) 
(global-set-key (kbd "C-c C-<")'mc/mark-all-like-this)

multiple-cursorsパッケージの導入

emacsを再度たちあげmultiple-cursorsパッケージの導入を行います。emacsの画面で以下のように操作します。この操作を行うとmultiple-cursorsパッケージのインストールが開始されます。インストールが終わったらemacsを一旦閉じて再起動しましょう。(Mはエムではなくメタキーです)

M-x → package-install → enter → multiple-cursors → enter

特段確認する必要はありませんがどんなパッケージがあるかみることもできます

M-x → package-list-packages → enter #パッケージリストの表示

これはパッケージリストの画像です↓。こちらの画像はすでにmultiple-cursorsを導入済みです。
multiple cursors

ここまでの作業でパッケージの導入も完了し、起動時のmultiple-cursorsの読み込み処理とキーバインドを書いているので使えるようになっているはずです。

multiple-cursorsを使いこなすためのチュートリアル

設定したキーバインドの名前と使い方について詳しくみていきたいと思います。

mc/edit-lines

こちらはスタートするスイッチみたいな使い方になります。これを発動させることによってカーソルを追加できるモードになります。この状態にすることによってmark-next-like-this、mark-previous-like-thisが使える状態になります。ミニバッファには以下のように表示されます。

Mark a set of lines first

mark-next-like-this

mark-next-like-thisは下にカーソルをひとつ増やします。mc/edit-linesを実行済みである必要があります。

mark-previous-like-this

mark-previous-like-thisは上にカーソルをひとつ増やします。mc/edit-linesを実行済みである必要があります。

テキストを入力およびカーソルを動かす

作成したカーソルは動かしてテキストを入力することができます。ちょっと汚いですが以下のようになります

一風変わったつかいかたですが行末に移動するC-Eと組みわせることもできます。

mark-all-like-this

mark-all-like-thisは置換っぽいことができます。マークした単語にすべてカーソルが配置されます。mark-all-like-thisはちょっとかわっていて、まずはじめにC-Spaceで範囲選択状態にしてなんでもいいので単語を選択範囲にします。そこでmark-all-like-thisを実行するとすべて同一の単語すべてにカーソルが設置されます。

ただこの機能は標準の置換機能をつかえばいいので意味があるかというと不明です。これでひととおりのemacs | multiple-cursorsのチュートリアルは終了です。

補足事項

キーバインドに関してですが、筆者の環境ですと動きませんでした。他のキーバインドならばmultipule-cursorsは動作しました。しかしながら上記のキーバインドはmultipule-cursorsの開発者公式がうたっているキーバインドですので、問題は筆者の環境にありそうです。

追記

ターミナル上でEmacsを使っている人は、一部のキーバインドが使えないようになっているので、適宜修正してください。
iTerm2上のemacsで C-; C-: C-> C-< C-. C-, 記号キーバインドが入力できないのを解決する - joppot

まとめ

multiple-cursorsはワクワクする機能ではありますが、たぶんなくてもよいです。なので導入がめんどうそうだと感じたかたは一旦みおくってもよいかもしれません。なんというか使い手次第な気もします。わからないことがあれば質問箱にでもなげといてください


Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 49

Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 78