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)
参考