spacemacs の使い方 (編集)

前回 に続き spacemacs の使い方を編集を中心に述べる. 最低限必要なキーバインドは編集以外なら

  • SPC, M-m, C-z, C-g

だけでなんとかなるといった. 編集についてもカーソル移動と削除キーがついている普通のパソコンなら, アンドゥ, カット, コピー, ペーストのそれぞれのモードのショートカットを覚えればなんとかなる. そのうえで spacemacs でどのように使えばよいかを説明する.

インサートモード

evil-mode, つまり vim では複数のモードがある. ここではノーマルモードとインサートモードとヴィジュアルモードとがある. インサートモードは文字を入力するモードである. ノーマルモードからインサートモードに移るには i,a を押す. それによって, 文字が入力される. 通常の emacs-mode はある意味常時インサートモードといってよい. つぎにヴィジュアルモードは画面選択が可能になるモードである. これについては後で説明する.

移動

カーソル移動だけでなんとかなると言ったが, 以下の機能を覚えておいたほうが便利である.

emacs evil
カーソル移動 C-f/b/n/p l/h/j/k
単語移動 M-f/b w/b/e/W/B/E
行頭/尾 C-a/e 0/^/$
文移動 M-a/e (/)
段落移動 M-{/} {/}
一画面移動 C-v/M-v C-f/b
バッファ移動 M-</> gg/G

最初の行のカーソル移動のショートカットを覚えて, 最終的にはマウスとカーソルを使わないことを目指していきたい.

選択

通常のエディタのシフトと矢印キーかマウスで選択するのを, emacs ではそれらを使わず選択するこができる. emacs-mode では, C-SPC でマークし, さきほどの移動コマンドで範囲を変更する. C-M-SPC で範囲を (S 式のルールに従い) 拡大したり, C-x C-x でマークの始点を変更したりする. 昔の emacs は矩形編集の操作が面倒であったが, バージョン 24.4 以降 C-x SPC という操作でかなり楽になった.

evil-mode のノーマルモードから, また v を押し, ヴィジュアルモードに移行し, 移動コマンドで範囲を選択する. マークの始点の変更は o である. また行ごとの場合は V, 矩形選択の場合は C-v とすればよい.

なお移動コマンドだけでなく, 検索によって範囲を拡大させることができる. 検索については後述する.

さて, spacemacs は expand region というパッケージがすでに導入されていて単語の選択拡大・縮小を簡単に実行できる. SPC v で単語選択に拡大し, もういちど v を押せば文選択に拡大する.

なお単語選択について日本語では文節まで拡大してしまうので, 修正が必要である. そのとき emacs-mode では C-x C-x でマークの始点を変更し, カーソル移動を実施すればよい. evil-mode では o でマークの始点を変更すればよい.

コピペ

windows や linux の「標準」エディタの編集コマンド (cua) との比較でまとめると次のようになる.

emacs evil cua
undo C-/ u C-z
cut C-w c,d C-x
copy M-w y C-c
paste C-y p/P C-v

mac だと コントロールキーのかわりにコマンドキーを使うので併用できる.

windows や linux でも M-x cua-mode にすれば標準の操作が可能になる. C-x, C-c は制限時間内に何も操作なければ利用可能であるが, C-z と C-v は注意が必要である. C-v は PageDown キーを使えば問題無いが, C-z は使えなくなる. キーバインドを変更するか, どちらかのモードだけを利用すると決めておく必要がある. つまり mac を利用する以外は, emacs か evil のどちらかの編集コマンドは覚えたほうがよい.

emacs-mode のとき cut を kill-ring-save といい, copy を kill-region と呼ばれる. キルされたテキストはキルリングに保存される. 一文字削除の C-d や単語削除の M-d など選択を伴わず, キルリングに保存されたり, 保存されないコマンドがあるが, ここでは省略する. 貼り付けについて emacs-mode では貼り付けのことをヤンクといい, C-y で実施する. evil-mode でのヤンクと役割が違うので混乱のないようにされたい.

evil-mode のとき, cut は削除であり, copy はヤンクであり, それぞれコマンド c,d, y と割当てられている. ヴィジュアルモードで選択したものを削除するとき, c だとインサートモードに移動し, d だとノーマルモードに戻る. ヤンク y だとノーマルモードにもどる. ヴィジュアルモードからなにもしないのなら ESC でノーマルモードに戻る.

なお evil-mode では, モーションという動作組み合わせて, ヴィジュアルモードを経ないでノーマルモード上で c,d, y を実行することができる. これが使いこなせるようになると Vim が楽しくなるがここでは説明を省略する.

evil-mode では貼り付けのプットといい, ノーマルモードで p/P を押す. カーソルの後ろに貼り付ける場合 p で, 前に貼り付ける場合 P である. 通常の emacs の貼り付けは大文字の P に対応しているので注意されたい.

さて, emacs は過去のコピーしたものをキルリングに保存している. これは evil-mode で編集したものを保存されている. これを取り出すのは emacs-mode では M-y を実施し, evil-mode では レジスタを指定した貼り付けを実施する. どちらもいささかわかりにくい.

これについて spacemacs は SPC r y (helm-show-kill-ring) を実施すればよい. このときどちらともにキルリングに保存されたものをリストで表示し, 貼り付けたいものを選択することができる.

avy

移動について, カーソル移動だけで十分といったが, emacs は avy が導入されているからである. avy については

を参照されたい.

主な機能は SPC SPC として, 任意の候補が出るので該当キーを押し, 単語移動する. 同様に SPC y で行移動する. また SPC ` でジャンプ前にもどってくれる. たとえば, 文章作成中にスペルミスや誤植などが見つかった場合, ジャンプして直して元に戻ることがマウスを使わず簡単に実行できる.

さらに ayv には便利な機能がある. リスト化すると以下である.

  • 単語選択する前に m を押せば, その単語にジャンプし選択までしてくれる.
  • 単語選択する前に x を押せば, その単語にジャンプし削除までしてくれる.
  • 単語選択する前に n を押せば, その単語にジャンプし選択し, もとに戻ってくれる.

とくに最後の機能は文章作成中に過去に使用した単語を正確に再度使いたい時に重宝する.

なお spacemacs のデフォルトの avy は日本語に対応していない. 単語移動でなく文字移動 (avy-goto-char) をつかえば日本語の文字にジャンプできる. ただ単語選択中の m,x,n といった機能はつかえなくなる.

これについて migemo を導入すれば日本語での単語移動も可能になるので, 今回は変更せずこのままにしておく. migemo の導入について後日説明したい.

まとめ

コピペのキーバンドとカーソル移動だけで, 複雑な移動のキーバインドを覚えることなく spacemacs はかなり便利に扱える. 具体的に移動したい場所には

  • SPC SPC, SPC y, SPC `

で自在に移動する. 選択範囲の拡大・縮小を

  • SPC v

でおこない, 編集を実施する. 特に過去の編集でカットおよびコピーしたものを

  • SPC r y

で実施できる. なお spacemacs の avy は日本語に対応していない. ただ migemo を導入すれば簡単に拡張可能である. migemo の導入方法を説明する前に, 次回は検索について解説する.

spacemacs の使い方 (編集)」への1件のコメント

  1. ピンバック: spacemacs に migemo を導入 | miyazakikenji

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中