Spacemacs
Spacemacs は Emacs をベースに Vim のキーバインドを組み合わせて作られた、拡張性・カスタマイズ性の高いテキストエディタです。プロジェクトの目標は Vim と Emacs エディタそれぞれから長所を抽出して統合することです。Spacemacs ディストリビューションはコミュニティ主導の Emacs 設定を元にしています。デフォルトの Emacs の挙動を拡張しており大量の追加機能が存在します。
インストール
Emacs のインストール
Spacemacs は Emacs 上で作られているため、先に Emacs のインストールが必要です。emacs パッケージをインストールしてください。
既存の Emacs 設定をバックアップ (任意)
既に Emacs を使っている場合、設定をバックアップしてください:
$ mv ~/.emacs.d ~/.emacs.d.bak && mv ~/.emacs ~/.emacs.bak
Spacemacs のインストール
Spacemacs をインストールするには、GitHub から実際の構成を複製し、Emacs 構成を完全に置き換える必要があります。 2020年9月現在、開発ブランチをインストールすることをお勧めします。
$ git clone -b develop https://github.com/syl20bnr/spacemacs ~/.emacs.d
何ヶ月もメンテナンスされていない master の代わりに ブランチをインストールする場合は、次のようにします。
$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
Adobe Source Pro フォントのインストール (任意)
Spacemacs が使用するデフォルトフォントは Adobe の Source Code Pro です。Spacemacs を使用するときはフォントをインストールすることが推奨されています。adobe-source-code-pro-fonts パッケージをインストールしてください。
フォントが存在しない場合、他のフォントが使われます。
Emacs 設定ファイルを削除する
~/.emacs ファイルをバックアップし (必要な場合)、まだ削除していない場合は削除します。そうしないと、Emacs が適切な初期化ファイルをロードできないため、Spacemacs はロードされません。次のように名前を変更し実行して下さい。:
$ mv ~/.emacs ~/.emacs.bak
バックアップせずに削除する場合。:
$ rm ~/.emacs
Spacemacs の初期設定
Spacemacs を起動してください:
$ emacs
最初にインストールする機能について質問されます。選択は必須です。選択によって Spacemacs の挙動やホットキーが変わります。Enter を押してデフォルトの値を使うことを推奨します。デフォルト設定は高度に最適化されており後で自由に変えることもできます。
質問を終えると、Spacemacs は必要なパッケージをダウンロード・インストールします。数分はかかります。Spacemacs がフリーズしているかのように見えるかもしれませんが、問題はありません。
Spacemacs の実行
spacemacs を起動するには:
$ emacs
下のバーに '...' が表示されなくなったら Spacemacs を使用できます。
デーモンモード
Spacemacs はデーモンモードで起動することもできます。デーモンモードはエディタを一度だけ初期化して、後から設定ファイルを再読込することなく接続して使うことが可能です。巨大な設定ファイルを使っている場合、初期化が一度だけですむので便利です。初期化してしまえばすぐに接続することができます。
デーモンモードで Spacemacs を起動するには:
$ emacs --daemon=instance1
emacsclient を使って instance1
に接続できます:
$ emacsclient -nc -s instance1
Systemd モジュール
emacs デーモンを実行するための systemd モジュールを作成することができます。コミュニティ ELPA パッケージに起因するセキュリティ上の懸念により、ここで説明されているように、ユーザー特権の systemd ユーザー モジュールとしてデーモンを実行することをお勧めします。
次のような emacs ユーザーの systemd サービス ファイルを作成します。
.config/systemd/user/emacs.service
[Unit] Description=Emacs text editor Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/ [Service] Type=forking ExecStart=/usr/bin/emacs --daemon=instance1 ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)" Restart=on-failure [Install] WantedBy=default.target
Emacs/Spacemacs デスクトップ ファイルを次のように編集します。 Exec の変更に注意してください。
/usr/share/applications/emacs.desktop
[Desktop Entry] Name=Spacemacs GenericName=Text Editor Comment=Edit text MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; Exec=emacsclient -nc -s instance1 %F Icon=/home/[!!! YOUR USER NAME HERE !!!]/.emacs.d/assets/spacemacs.svg Type=Application Terminal=false Categories=Development;TextEditor; StartupWMClass=Emacs Keywords=Text;Editor;
次に、daemon-reload して emacs.service
systemd/ユーザー を 起動 して実行します。
エラーが発生していないことを確認してください。すでにデーモンとして実行されている emacs をいじっていてエラーが発生した場合は、作成したばかりのユーザー emacs サービスを 有効化 して再起動することをお勧めします。ユーザー emacs.service
ユニットステータス を確認することも役立つ場合があります。次に、成功した場合は、永続化のために systemd/ユーザー を 有効化 します。
完了すると、DE ランチャーを介して emacs を起動し、ロード時間を大幅に短縮できますが、非常に強力なシステムでも emacs はすぐには開きません。必要に応じて、次のコマンドをエイリアスとすることもできます。 instance1 の名前も変更できますが、サービス ファイル内のデーモンの名前と一致するようにしてください。
$ emacsclient -nc -s instance1
使用方法
最初 Spacemacs は多少使いづらいかもしれません (特に初心者にとっては)。しかしながら、努力は報われます。基本的な作業をこなすのに覚えておく必要があることはほんの少しです。
:q[Enter] と打ち込むことでいつでも spacemacs を終了できます。
ビルトインチュートリアル
Spacemacs で SPC h T
と押すことでいつでも Spacemacs に組み込まれているチュートリアルを立ち上げることができます。
基本概念
準備
基本概念を説明するのにお試し用のテキストが必要です。最初に作成しましょう。現段階ではコマンドがよく分からなくても結構です。
- Spacemacs を実行
SPC b N
を押して新しい空のバッファを作成9 SPC i l l
を押してテキストを挿入
9行のテキストが生成されるはずです。作成したテキストを使って次のセクションで説明しているコマンドを試してみてください。
最初にステートについて説明します。
エディタステート
Spacemacs と普通のテキストエディタの大きな違いはステートです。ステートによってエディタの動作が変わります。例えば (普通のテキストエディタと同じように) 文章を入力できる挿入ステートやキーが全てコマンドとして認識されて文章は変更されないノーマルステートが存在します。どれかひとつのステートが有効になります。ステートの切り替えは Spacemacs を使うにあたって鍵となるスキルです。
エディタの現在のステートは左下に表示されます。色付きの矩形に "1" (デフォルト) と表示されているのがそうで、色によって現在のステートが分かります。様々なステートが存在しますが、通常使用するステートは限られます:
- オレンジはノーマルステートです。コマンドの入力やテキストの移動で使います。
- グリーンは挿入ステートです。テキストの入力に使います。
- グレーはビジュアルステートです。テキストの選択と操作に使います。
カーソルの色でも現在のステートは判別できます。
ノーマルステート
ノーマルステートではテキストの移動とコマンドの実行ができます。ノーマルステートで直接テキストを打ち込むことはできません。代わりに、素早く移動したり様々な校正を行うことができます。ノーマルステートはデフォルトのステートであり、オレンジ色をしています。
ESC
キーを押すか fd
キーシーケンスでいつでもノーマルステートに戻ることが可能です。
移動
以下のキーを使うことで基本的な移動が可能です:
h
- 1文字分だけ左にカーソルを移動j
- 1文字分だけ下にカーソルを移動k
- 1文字分だけ上にカーソルを移動l
- 1文字分だけ右にカーソルを移動
単語あるいは文章単位の移動もひとつのキーで行うことができます:
w
- 次の単語 (の先頭) に移動b
- 前の単語 (の先頭) に移動(
- 現在の文の先頭に移動)
- 次の文の先頭に移動^
- 行の先頭に移動$
- 行の末尾に移動
ページをスクロールするには以下のコマンドを使います:
Ctrl+f
- 1ページ分だけ下に移動Ctrl+b
- 1ページ分だけ上に移動gg
- 文章の一番最初の行に移動G
- 文章の一番最後の行に移動
コマンドに数字を付けることで、複数回コマンドを繰り返すことができます:
5j
- カーソルを5行下に移動7w
- カーソルを7単語分先に移動3 Ctrl+f
- 3ページ下に移動20gg
- カーソルを20行目に移動
上記で説明していないコマンドも多数存在します。基本的には Spacemacs では Vim のように自由自在に移動できます。
テキスト操作
以下のコマンドでテキストを編集することができます:
x
- カーソルの文字をカットdw
- カーソルの単語をカットdd
- カーソルの行をカットyw
- カーソルの単語をコピー (ヤンク)yd
- カーソルの行をコピー (ヤンク)p
- コピー・カットしたテキストを貼り付けra
- カーソルの文字を a に置換
上記のコマンドで数字引数を使うこともできます。
アンドゥ/リドゥ
変更の取り消し・やり直しは以下のコマンドで行なえます:
u
- 最後の変更を取り消しCtrl+r
- 最後の変更をやり直し
挿入ステート
挿入ステートはテキストを入力するときに使います。普通のエディタと同じような動きをします。ただし、テキストの編集能力は限られています。訂正を行うときはノーマルステートに戻してください。挿入ステートの色はグリーンです。
挿入ステートに移行
挿入ステートに入るには、ノーマルステートから i
を押します。カーソルが細く緑色に変化します。何か入力してみてください。挿入が完了したら、ESC
キーまたは fd
キーシーケンスで挿入ステートを終わらせることができます。
挿入モードに移行する方法は多数存在します。違いは最初のカーソル位置だけです。最初は i
ホットキーだけ知っていれば十分でしょう。ただし他の方法もマスターすれば便利なはずです:
i
- カーソルの前から挿入モードに入るa
- カーソルの後から挿入モードに入るI
- 行頭から挿入モードに入るA
- 行末から挿入モードに入るo
- 次の行から挿入モードに入るO
- 前の行から挿入モードに入る
挿入ステートから離脱
挿入ステートを終了するには ESC
キーまたは fd
キーシーケンスを押します。ノーマルステートに復帰してカーソルがオレンジに変化します。
ビジュアルステート
ビジュアルステートは視覚的にテキストを選択するときに使います。テキストを選択して切り取り・コピーすることができます。ステートカラーはグレーです。
ビジュアルステートに移行するにはノーマルモードから v
ホットキーを押してください。通常モードと同じホットキーでカーソルを移動できますがテキストが選択されます。カーソルを移動すると最初のカーソル位置からテキストが選択され、y
ank (コピー) または d
elete (削除) することができます。ve
や v(
などのコマンドを使って素早く単語や文章を選択することが可能です。詳しくは#移動セクションを読んでください。
また、V
を押すことで全ての行を選択できます。
ビジュアルブロックステート
ビジュアルブロックステートはビジュアルステートの強化版です。テキストを矩形選択することができます。通常のエディタや IDE のマルチカーソルと似ています。Ctrl+v
ホットキーを押すことでビジュアルブロックステートに移行できます。h j k l
キーで移動してみて違いを確認してください。
ビジュアルブロックステートで出来ることは様々です。詳しくは資料を参照してください。ビジュアルブロックステート機能は元は vim visual block mode と呼ばれていました。
バッファ (タブ)
Spacemacs ではテキストはバッファと呼ばれる領域に存在します。バッファは通常のエディタにおけるタブと似ています。バッファを切り替えたり新しいバッファを作成することができます。バッファは一部の情報を保存するのにエディタ自身によっても使われています。
操作
現在のバッファのリストを表示するには SPC b b
を押してください。下部に新しいウィンドウが表示され、バッファを確認・フィルタ・操作することができます。*Messages* や *scratch* などのバッファが既に存在するはずです。これらはエディタによって作成されており便利な情報が含まれています。
下部ウィンドウでまずできることは pattern
フィールドに文字を入力することです。バッファがフィルタリングされます。フィルタリング後に何もバッファがなくなったら、"Enter" を押すことで新しいバッファを作成することができます。入力した名前の新しいバッファが作成されて開きます。
バッファは手動で開くこともできます。Ctrl+j
または Ctrl+k
を押して行を移動してください。それから Ctrl+l
または Enter
を押すことで選択されたバッファが開きます。
ノーマルステートからホットキーを使ってバッファを制御することも可能です:
SPC b b
- バッファを一覧するSPC TAB
- 最後に表示したバッファに切り替えるSPC b n
- 次のバッファに切り替える (ひとつ先)SPC b p
- 前のバッファに切り替える (ひとつ前)SPC f s
- 現在のバッファをファイルに保存SPC b d
- 現在のバッファを閉じる
ファイル
Spacemacs でファイルを操作するときは2つのオプションがあります: インライン操作と組み込みファイルマネージャです。インライン操作は Spacemacs の確認ダイアログで使用し、シェルとよく似ています。組み込みファイルマネージャはもっとユーザーフレンドリーで、ファイルの詳細をチェックすることができます。Spacemacs をマスターするにはそれぞれの操作を学習することが重要です。
より強力なファイルマネージャやツリーを使うオプションも存在します。#ファイル操作セクションを読んでください。
インライン (Helm)
インライン操作は SPC f f
ホットキーで使えます。バッファ操作とよく似たウィンドウを使用します。ウィンドウからファイルをフィルタリングしたり選択することが可能です。何か文字列を入力することで表示ファイルを絞ることができ、Ctrl+j
または Ctrl+k
を押せば行が上下に移動します。ファイルやディレクトリを開くには Ctrl+l
を押してください。前に戻るには Ctrl+h
を押します。TAB
を押すことで入力補完を使うことができます。
ファイルマネージャ (Dired)
より視覚的に使いたい場合、SPC a d
Enter
を押して Spacemacs に組み込まれているファイルマネージャを起動します。Ctrl
+h j k l
キーを押して移動することができ、Enter
を押せばディレクトリに入ったりファイルを開いたりします。
利用可能なホットキーの一部 (他のホットキーは Dired のドキュメントを参照してください):
q
- Dired を終了R
- ファイルの名前を変更C
- ファイルをコピー+
- 新しいディレクトリを作成
終了
エディタは SPC q
で終了することができます。終了する方法は複数存在します:
利用可能なものは次のとおりです。
SPC qf
- 現在のフレームを終了。emacsclient を使っている場合に有用です。SPC qq
- Emacs を終了 (kill-emacs)。SPC qr
- Emacs を終了から再起動してレイアウトを復元。SPC qR
- Emacs を終了して再起動。SPC qd
- Emacs を終了して--debug-init
で再起動。
高度な概念
ファイルを開いて、変更を加えて保存できるようになったら半分は上出来です。次はマスターしたいことを選んでください。
レイヤー
Spacemacs の最強機能のひとつがレイヤーです。レイヤーはパッケージと設定オプションの集合であり、様々にエディタの機能を拡張できます。様々なプログラミング言語のレイヤーが存在します。また、IRC メッセージや内蔵ウェブブラウザなどツールを追加するレイヤーがあります。レイヤーの完全なリストは Layers ドキュメントページから確認できます。
Spacemacs にはいくつかレイヤーが付属しており、手動でレイヤーを追加することもできます。レイヤーを追加するには、Spacemacs の設定ファイルを開いて (SPC f e d
)、dotspacemacs-configuration-layers
セクションを検索してください。そしてリストにレイヤーを追加して Spacemacs を再起動してください。次回起動時に必要なファイルがすべてダウンロードされます。
Spacemacs には特定の拡張子のファイルを開いたときに新しいレイヤーをインストールする機能もあります。例えば、.html
ファイルを開くと html
レイヤーのインストールが行われます。
レイヤーの挙動をカスタマイズしたい場合、Spacemacs の設定ファイルのレイヤー固有の変数を上書きすることで設定できます。詳しくはレイヤーのドキュメントを確認してください。
ファイル操作
ファイル操作に役立つツールが複数存在します。日常的な Spacemacs の使い勝手を大幅に向上させてくれます。
ファイルツリー (Neotree)
SPC f t
を押すことでファイルツリーを起動できます。新しいウィンドウを開いて SPC 0
でアクセスできます。標準の h j k l
による移動が可能です。R
でルートフォルダを変更して s
で隠しファイルを表示できます。新しいファイルは c
で作成し、ファイル名の変更は r
で行えます。詳しくは Neotree のドキュメントを参照してください。
ファイルマネージャ (Ranger)
フル機能のファイルマネージャが必要な場合、Ranger が最適でしょう。高速な h j k l
による移動やインラインファイルプレビュー、ファイルの操作など便利な機能が多数存在します。また、デフォルトの Dired の挙動 (SPC a d
) が改善されます。ranger
レイヤーをインストールして SPC a r
で起動してください。詳しくは Ranger のドキュメントを参照。カスタマイズオプションや便利なホットキーがあります。
ウィンドウ
Spacemacs では画面を複数のウィンドウに分割することができます。ウィンドウにはそれぞれ番号が割り当てられ SPC n
ホットキーでアクセスできます (n
を番号に置き換えてください)。ウィンドウは独立して分割できるため、複雑なレイアウトを作成することができます。
ウィンドウを操作するホットキーは以下の通りです。他のホットキーはインラインヘルプ (SPC w
) を確認してください。
SPC w 3
- 3番のウィンドウにフォーカスSPC w s
- ウィンドウを水平に分割SPC w v
- ウィンドウを垂直に分割SPC w d
- ウィンドウを削除SPC w u
- 最後のウィンドウアクションを取り消すSPC w m
- ウィンドウのフルスクリーンの切り替えSPC w .
- ウィンドウをトランジェントステートにする
トラブルシューティング
起動が遅い
起動時間が10秒を超える場合、おそらく exec-path-from-shell
モジュールが原因です。Linux 環境では無効化しても問題ありません。以下の手順に従ってください:
SPC f e d
を押して Spacemacs の設定ファイルを開いてください。dotspacemacs-excluded-packages
セクションを探してください。exec-path-from-shell
モジュールを追加して、最後のエントリがdotspacemacs-excluded-packages '(exec-path-from-shell)
となるようにしてください。SPC f s
で変更を保存して Spacemacs を再起動してください。
マイナーモードアイコンのフォントがおかしい
ⒺⓀ の代わりに 24ba 24c0 記号が表示されたり、あまりにも醜い場合は、
次に、これらのシンボル用の適切な Unicode フォールバック フォントをインストールするか、dotspacemacs-mode-line-unicode-symbols
を nil
に設定して無効にする必要があります。
GNU ELPA GPG 鍵の有効期限に関係するかもしれません、 :(setq package-check-signature nil)
から M-x package-install
を実行してから。gnu-elpa-keyring-update
を実行してください。
これがうまくいかない場合は、例えば emacs26-gitAUR を使って emacs 26 にロールバックしてみてください。