Spacemacsいいですね!
慣れ親しんだ便利なEmacsのパッケージを使いつつ、Vimの簡潔なキー操作ができるので、とても気に入っています。
今はまだEmacsの操作感が抜けきっておらず、Vim(Evil)もわからないことが多いです。ちょいちょい操作を忘れてしまう。
Spacemacsに慣れるまではチートシートを育てていこうかなと思います。
キーバインド
起動、停止
Spacemacs |
Emacs |
説明 |
SPC q q (spacemacs/prompt-kill-emacs ) |
C-x C-c (save-buffers-kill-terminal ) |
Emacsを終了する |
編集
Spacemacs |
Emacs |
説明 |
S-a
C-x h
|
C-x h (mark-whole-buffer ) |
全選択 |
x (evil-delete-char ) |
C-d (delete-char ) |
一文字削除 |
d<text-obj> (evil-delete ) |
(テキストを選択して) C-w (kill-region ) |
テキストを削除、キルリングへコピーする |
y<text-obj> (evil-yank ) |
(テキストを選択して) M-w (kill-region-save ) |
キルリングへコピーする |
P (evil-paste-before ) |
C-y (yank ) |
カーソルより前の位置でペーストする |
p (evil-paste-after ) |
- |
カーソルより後の位置でペーストする |
u |
C-x u (undo ) |
Undo |
C-r (redo ) |
- |
Redo |
SPC a u (undo-tree-visualize ) |
- |
変更履歴ツリーを辿って、Undo/Redoする |
r<char> (evil-replace ) |
- |
カーソル下の文字を<char> に置き換える |
cs<t1><t2> (evil-surround-change ) |
- |
囲んでいる<t1> を<t2> に置き換える (cs<[ など開き括弧を使うと置き換え時にスペースを追加する。cs>] など閉じ括弧を使うとスペースは追加しない。) |
テキストオブジェクト(<text-obj>
)がよくわからない時は、v
でビジュアルモードにして選択してからd
やy
を使う。
行操作
Spacemacs |
Emacs |
説明 |
dd |
kill-whole-line |
現在の行を削除、キルリングへコピーする |
D (evil-delete-line ) |
C-SPC C-e C-w |
カーソルより後を削除、キルリングへコピーする |
yy |
- |
現在の行をキルリングへコピーする |
Y (evil-yank-line ) |
C-SPC C-e M-w |
カーソルより後をキルリングへコピーする |
J (evil-join ) |
- |
今いる行と次の行を結合(Join)する。行間にスペースを挟む。 |
gJ (evil-join-whitespace ) |
- |
今いる行と次の行を結合する。行間にスペースを挟まない。 |
挿入ステートへ移行
Spacemacs |
Emacs |
説明 |
I (evil-insert-line ) |
- |
^ の位置で挿入 |
A (evil-append-line ) |
- |
$ の位置で挿入 |
o (evil-open-below ) |
- |
改行文字を追加して、次の行で挿入 |
O (evil-open-above ) |
- |
改行文字を追加して、前の行で挿入 |
c<text-obj> (evil-change ) |
- |
テキストを削除して、挿入 |
ESC (evil-escape )
fd
|
- |
挿入ステートからエスケープする |
領域選択/ビジュアルステート
v
でビジュアルステートへ移行する。
SPC v
(er/expand-region
) で領域を伸長するのも便利。
Spacemacs |
Emacs |
説明 |
s<text> (evil-surround-region ) |
- |
領域を<text> で囲む
( 、[ 、<html> のような左右で違う文字もよしなに処理する |
矩形選択/ビジュアルブロックステート
C-v
で矩形選択ステートへ移行する。
Spacemacs |
Emacs |
説明 |
I 文字入力 Esc
|
- |
矩形の左端に文字挿入 |
A 文字入力 Esc
|
- |
矩形の右端に文字挿入 |
移動
Spacemacs |
Emacs |
説明 |
C-l |
C-l (recenter-top-bottom ) |
現在行を画面中央、上、下に移動
zz 、zt 、zb をトグルする |
gg (evil-goto-first-line ) |
M-< (beginning-of-buffer ) |
ウィンドウの先頭へ移動 |
G (evil-goto-line ) |
M-> (end-of-buffer ) |
ウィンドウの末尾へ移動 |
H (evil-window-top ) |
- |
今表示しているスクリーンの先頭に移動 |
M (evil-window-middle ) |
- |
今表示しているスクリーンの中央に移動 |
L (evil-window-bottom ) |
- |
今表示しているスクリーンの末尾に移動 |
SPC j j (evil-avy-goto-char ) |
- |
ヒントで示した位置にカーソルを移動 |
SPC j l (evil-avy-goto-line ) |
- |
ヒントで示した行にカーソルを移動 |
検索
Spacemacs |
Emacs |
説明 |
/<keyword> |
- |
順方向に検索 |
?<keyword> |
- |
逆方向に検索 |
* |
- |
今カーソルがある位置の単語を検索 |
# |
- |
* の逆方向 |
// |
- |
前回の検索を繰り返す |
:noh |
- |
検索結果のハイライトをリセットする |
SPC s s (helm-swoop ) |
- |
grepの要領でバッファ内を検索する |
置換
Spacemacs |
Emacs |
説明 |
:%s/pattern/pattern/gc |
C-M-% (query-replace-regexp ) |
ファイル全体を確認して、置き換える |
ファイル (SPC f
)、バッファ (SPC b
)
Spacemacs |
Emacs |
説明 |
SPC f f (spacemacs/helm-find-files ) |
- |
Helmインターフェースでファイルを開く |
:w
SPC f s
|
C-x C-s (save-buffer ) |
ファイルを保存する |
SPC b b (helm-mini ) |
- |
バッファ、最近開いたファイルなどを串刺しで検索、開く |
SPC b d |
kill-this-buffer |
バッファを閉じる |
SPC f o (spacemacs/open-file-or-directory-in-external-app ) |
- |
Windows、OS X、Linuxで関連付けたアプリでファイルを開く |
SPC f j |
C-x C-j (dired-jump ) |
diredを開く |
C-x RET f |
C-x RET f (set-buffer-file-coding-system ) |
バッファの文字エンコーディング、改行文字を設定、変更する |
SPC f e d (spacemacs/find-dot-file ) |
- |
.spacemacsを開く |
SPC f e R (dotspacemacs/sync-configuration-layers ) |
- |
.spacemacsを再読込する |
ウィンドウ (SPC w
)
Spacemacs |
Emacs |
説明 |
SPC w -
SPC w s
|
C-x 2 (split-window-below ) |
ウィンドウを水平分割 |
SPC w /
SPC w v
|
C-x 3 (split-window-right ) |
ウィンドウを垂直分割 |
SPC w d |
C-x 0 (delete-window ) |
現在いるウィンドウを閉じる |
SPC w w |
C-x o (other-window ) |
他のウィンドウへ移動する |
SPC w u |
winner-undo |
ウィンドウの構成を戻す |
SPC w W (ace-window ) |
- |
ヒントで示されたウィンドウへ移動する |
SPC 1 〜SPC 9 (winum-select-window-1 〜9 ) |
- |
N番目のウィンドウへ移動する |
セッション管理
elscreenのようなウィンドウセッションの管理をするために、Spacemacsにはeyebrowseのレイヤがある。
2016/10/22追記:その後eyebrowseレイヤはなくなり、spacemacs-layoutsレイヤの一部になりました。.spacemacsでdotspacemacs-distribution 'spacemacs
としている状態であれば、レイヤの設定を追加することなくeyebrowseが使えるようになっています。
Spacemacs |
Emacs |
説明 |
g t (eyebrowse-next-window-config ) |
- |
次のワークスペースへ移動する |
g T (eyebrowse-prev-window-config ) |
- |
前のワークスペースへ移動する |
C-c C-w 0 〜9 (eyebrowse-switch-to-window-config-0 〜9 ) |
- |
N番のワークスペースへ移動する。なければ新規に作成する |
C-c C-w , (eyebrowse-rename-window-config ) |
- |
ワークスペースの名前を変更する |
C-c C-w " (eyebrowse-close-window-config ) |
- |
ワークスペースを閉じる |
ヘルプ (SPC h
)
Spacemacs |
Emacs |
説明 |
SPC ? (helm-descbinds ) |
- |
キーバインドとコマンドの一覧を絞り込み検索する |
SPC <f1> (helm-apropos ) |
- |
コマンドの詳細 |
設定
挿入ステートではEmacsのキーバインドで操作したい
挿入ステートではカーソル操作にC-f
などEmacs風の操作ができない。
困るようなら、編集スタイルをhybridに設定する。
.spacemacs
dotspacemacs-editing-style 'hybrid
C-;
で挿入ステートからエスケープする
evil-escape
に直接キーバインドを設定する。
.spacemacs
(global-set-key (kbd "C-;") 'evil-escape)
バージョンを更新する
新しいバージョンのSpacemacsがある場合は、Emacsのモードラインに↑が表示されるのでそれをクリックすればよい。
マニュアルで行いたい場合は、git fetch
、git reset --hard
する。
fish
$ cd ~/.emacs
$ git fetch
$ git reset --hard (git tag -l --sort=-v:refname | head -n 1)
参考