はじめに
動機
-
Emacs
: Vim
= 95 : 5
くらい、普段はEmacs
を使ってるんだけれど、たまに vim
も使うときがあるのでキーバインドを覚えたい
- でもやっぱり
Emacs
から離れたくない・・・というより離れられない
-
evil
というパッケージがあるのは知っているけど、自分で設定するのは面倒だ
-
Emacs
+ vim
= Spacemacs
!! (どんぴしゃ!)
Spacemacsのインストール
- すでにemacsの設定(
~/.emacs.d/
)があったので、バックアップをとっておいた
-
Spacemacsの公式サイトにある
INSTALL
ボタンをクリックし、そこに書いてあるコマンドを入力した
$ mv ~/.emacs.d ~/.emacs.d.bk
$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
Spacemacsの初期設定ウィザード
-
Emacs
を起動するとSpacemacs
のロゴが表示され、ウィンドウ下部のミニバッファに初期設定ウィザードが表示された
- 矢印キーと
Enter
キーで選択して進める
- 下記の3つの内容を設定した
編集スタイルの選択
What is your preferred editing style ?
-> Among the stars aboard the Evil flagship (vim
On the planet Emacs in the Holy control tower (emacs)
-
vim
スタイルかemacs
スタイルかを選択する
-
Spacemacs
を使うなら、ここではvim
スタイルを選択するのがよいと思う
- と書いておきながら、あとで
hybrid
に変更した
ディストリビューション(?)の選択
What distribution of spacemacs would you like to start with ?
-> The standard distribution, recommended (spacemacs)
A minimalist distribution that you can build on (spacemacs-base)
- フルパッケージ(
spacemacs
)か、ミニマムパッケージ(spacemacs-base
)かを選択する
- フルパッケージを選択した
補完ツールの選択
What type of completion framework do you want ?
-> A heavy one but full-featured (helm)
A lighter on but still very powerful (ivy)
None (not recommended)
-
helm
かivy
かを選択する
-
ivy
を選択した
- どちらを選ぶかは好みの問題
- 僕は
helm
の使い方が結局よく分からずido
を使っていた、そっちに似ているivy
にした
インストール完了
- 必要なパッケージのインストールがすべて終って完了!
-
Quick Help
画面が表示されるので、とりあえず書いてあるとおりにキーを押して遊んでみた
Quick Help
に書いてあること
- 英語が読めれば不毛な作業をここに記しておく
-
SPC h SPC
の動作は説明を読んでもよく分からず、実際に押してみてもよく分からず、なので、動作が理解できたときに修正する
キー |
動作 |
TAB or J
|
次のボタンに移動 |
Shift + TAB or K
|
前のボタンに移動 |
w |
warning 一覧にジャンプ |
r |
recent file 一覧にジャンプ |
p |
project 一覧にジャンプ |
b |
bookmark 一覧にジャンプ |
c |
org-agenda 一覧にジャンプ |
d |
org-todo 一覧にジャンプ |
o |
リンクやボタンにジャンプ |
m |
トップのメニューにジャンプ |
SPC |
Spacemacs コマンドを起動 |
SPC f e d |
~/.spacemacs を開く |
SPC h SPC |
(よく分からない) |
SPC s j |
ドキュメントを読んでいるときに、見出しを移動 |
キーバインド
終了・再起動(SPC q
)
キー |
コマンド |
動作 |
SPC q r |
restart-emacs-resume-layouts |
再起動 |
SPC q q |
prompt-kill-emacs |
終了 |
SPC q d |
restart-emacs-debug-init |
デバッグモードで再起動 |
Spacemacs
に関するドキュメント
ヘルプ操作(SPC h
)
キー |
コマンド |
動作 |
SPC ? |
counsel-descbinds |
キーバインドを調べる |
SPC h d |
+help-describe |
調べる系 |
SPC h d b |
describe-bindings |
キーバインドを調べる(SPC ? と一緒) |
SPC h d f |
describe-function |
関数を調べる |
SPC h d m |
describe-mode |
現在のバッファで有効になっているモードと使えるキーバインドを調べる |
SPC h d p |
describe-package |
パッケージを調べる |
SPC h d s |
describe-system-info |
システム情報をクリップボードにコピー(*Message バッファで内容を確認できる) |
SPC h d v |
describe-variable |
変数を調べる |
ウィンドウ操作(SPC w
)
キー |
コマンド |
動作 |
SPC w TAB |
alternate-window |
別のウィンドウを移動 |
SPC w 2,3 |
layout-double-columns |
縦に{2,3}分割 |
SPC w f |
follow-mode |
follow-modeの切り替え |
SPC w b |
switch-to-minibuffer-window |
ミニバッファに移動 |
SPC w d |
delete-window |
ウィンドウを消去 |
SPC w h,j,k,l |
evil-window-{left,down,up,right} |
上下左右に移動 |
SPC w W |
ace-window |
移動するウィンドウを選択 |
SPC w D |
ace-delete-window |
消去するウィンドウを選択 |
SPC w M |
ace-swap-window |
スワップするウィンドウを選択 |
バッファ操作(SPC b
)
キー |
コマンド |
動作 |
SPC b . |
buffer-transient-state |
バッファ移動ステート |
SPC b b |
ivy-switch-buffer |
バッファを選択 |
SPC b s |
switch-to-scratch-buffer |
*scratch* バッファ |
SPC b d |
kill-this-buffer |
バッファを削除 |
SPC b h |
home |
Spacemacs のホーム画面 |
ファイル操作(SPC f
)
キー |
コマンド |
動作 |
SPC f f |
counsel-find-file |
ファイルを開く |
SPC f r |
counsel-recentf |
最近使ったファイルを開く |
SPC f j |
dired-jump |
ディレクトリを開く |
SPC f J |
open-junk-file |
仮ファイルを開く |
- デフォルトの
junk
ファイルの保存先は~/.emacs.d/.cache/junk/
-
Google Drive
で同期できるように、シンボリックリンクにして使うことにした
junkへのシンボリックリンクを作成
$ cd .emacs.d/.cache/
$ rm -r junk
$ ln -s ~/Google\ Drive/junk/ .
Spacemacs
の設定(SPC f e
)
キー |
コマンド |
動作 |
SPC f e |
+emacs(spacemacs) |
Spacemacs レイヤーの操作 |
SPC f e d |
find-dotfile |
~/.spacemacs を開く |
SPC f e i |
find-user-init-file |
~/.emacs.d/init.el を開く |
SPC f e R |
dotspacemacs/sync-configuration-layers |
設定ファイルを再読込み |
Git操作(SPC g
)
キー |
コマンド |
動作 |
SPC g s |
magit-status |
Magit を起動 |
設定ファイルdotspacemacs
の編集
- インストールが完了すると
~/.spacemacs
という設定ファイルができていた
-
Spacemacs
の設定は、このファイルに記述する
-
Spacemacs
内からはSPC f e d
で開くことができる
編集スタイルの変更
;; One of `vim', `emacs' or `hybrid'.
;; `hybrid' is like `vim' except that `insert state' is replaced by the
;; `hybrid state' with `emacs' key bindings. The value can also be a list
;; with `:variables' keyword (similar to layers). Check the editing styles
;; section of the documentation for details on available variables.
;; (default 'vim)
dotspacemacs-editing-style '(hybrid :variables
hybrid-mode-default-state 'hybrid)
- さっそく編集スタイルを
vim
→ hybrid
に変更した
- 105行目の
dotspacemacs-editing-style
をvim
→ hybrid
に修正
-
hybrid-mode-default-state
を'normal
から'hybrid
に変更
- 詳しくはドキュメント参照 → 8.1 Editing Styles
-
hybrid
に設定すると、バッファが編集モードのときにEmacs
のキーバインドでカーソル移動ができるようになるので、Emacs
出身の人はやっておくとよいと思う
- 「
Emacs
な人はhybrid-mode-default-state
をemacs
にするとよい」と、ドキュメントに書いてあるが、そうするとESC
を押してもnormal
モードに移行できなかったので、ここもhybrid
にしたほうが、Spacemacs
を使う恩恵が受けられるのでよいと思う
フォントの変更
dotspacemacs-default-fontを変更
(defun dotspacemacs/init ()
(setq-default
...
;; dotspacemacs-default-font '("Source Code Pro"
;; :size 13
;; :weight normal
;; :width normal
;; :powerline-scale 1.1)
dotspacemacs-default-font '("Source Han Code JP"
:size 13
:weight light
:width normal
:powerline-scale 1.1)
))
Batteries Included
-
Emacs
もBatteries Included
である
- (ちゃんとした)パッケージの場合、
Emacs
内蔵のマニュアルから参照することができる
- ウェブ記事でいろいろ探すのもよいが、マニュアルをちゃんと読めば分かることも多い
全体の操作
コマンド |
内容 |
M-x info |
マニュアル起動 |
q |
終了 |
H |
コマンド一覧 |
mノード |
ノード (目次)に移動 |
T |
現在のパッケージの目次一覧を表示する |
M-n |
現在のノードを別バッファにクローンする |
- ドキュメントを読んでいると、あっちみてこっちみてすることが多いので、そんなときに
M-n
は便利
ノード間の移動
コマンド |
内容 |
d |
ルート・ノードに移動 |
g |
指定したノードに移動 |
] , n
|
次のノードに移動 |
[ , p
|
前のノードに移動 |
^ |
上のノードに移動 |
< |
最初のノードに移動 |
> |
最後のノードに移動 |
f |
参考文献のノードに移動 |
-
p
(前のノードに移動)は、Spacemacs
だと使えないみたい
ノード内の移動
コマンド |
内容 |
C-n , j
|
次の行 |
C-p , k
|
前の行 |
TAB |
次のリンクに移動 |
C-M-i |
前のリンクに移動;Shift + TAB と同じ |
b |
ノードの先頭に移動 |
RET |
リンク先に移動 |
SPC |
1ページ進む(Spacemacs だと使えない) |
DEL |
1ページ戻る |
L |
履歴一覧を表示する |
l |
履歴を戻る(Spacemacs だと使えない) |
r |
履歴を進む |
-
SPC
はプリフィックスに取られているので使えない。不便。Shift + DEL
に割り当てようかな
-
l
はvim
のl
に取られているので使えない。代わりにL
から探せばよいので問題はない
-
C-M-i
はShift + TAB
のほうが簡単
目次
- Spacemacsに乗り換えてみた(1)導入編
- Spacemacsに乗り換えてみた(2)キーバインド編
- Spacemacsに乗り換えてみた(3)レイヤー編
- Spacemacsに乗り換えてみた(4)ウェブ制作編
- Spacemacsに乗り換えてみた(5)メーラ編
- Spacemacsに乗り換えてみた(6)LaTeX編(予定)