Spacemacs

提供: ArchWiki
ナビゲーションに移動 検索に移動

SpacemacsEmacs をベースに 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 を使用できます。

ノート: 起動に10秒以上かかる場合、下のトラブルシューティングを見てください。

デーモンモード

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 に組み込まれているチュートリアルを立ち上げることができます。

基本概念

準備

基本概念を説明するのにお試し用のテキストが必要です。最初に作成しましょう。現段階ではコマンドがよく分からなくても結構です。

  1. Spacemacs を実行
  2. SPC b N を押して新しい空のバッファを作成
  3. 9 SPC i l l を押してテキストを挿入

9行のテキストが生成されるはずです。作成したテキストを使って次のセクションで説明しているコマンドを試してみてください。

ノート: SPC キーシーケンスを使うときは、ひとつずつキーを押してください。つまり SPACE, b, N の順番でキーを押します。大文字は Shift キーを押しながら押してください。例えば NShift+n です。最終的なシーケンスは SPACE, b, Shift+n となります。
ヒント: SPC キーを押すとヘルプメニューが下部に表示されます。メニューからコマンドを確認することが可能です。

最初にステートについて説明します。

エディタステート

Spacemacs と普通のテキストエディタの大きな違いはステートです。ステートによってエディタの動作が変わります。例えば (普通のテキストエディタと同じように) 文章を入力できる挿入ステートやキーが全てコマンドとして認識されて文章は変更されないノーマルステートが存在します。どれかひとつのステートが有効になります。ステートの切り替えは Spacemacs を使うにあたって鍵となるスキルです。

エディタの現在のステートは左下に表示されます。色付きの矩形に "1" (デフォルト) と表示されているのがそうで、色によって現在のステートが分かります。様々なステートが存在しますが、通常使用するステートは限られます:

  • オレンジはノーマルステートです。コマンドの入力やテキストの移動で使います。
  • グリーンは挿入ステートです。テキストの入力に使います。
  • グレーはビジュアルステートです。テキストの選択と操作に使います。

カーソルの色でも現在のステートは判別できます。

ノート: Spacemacs を使い込むには最低でもノーマル挿入ステートを知る必要があります。
ノーマルステート

ノーマルステートではテキストの移動とコマンドの実行ができます。ノーマルステートで直接テキストを打ち込むことはできません。代わりに、素早く移動したり様々な校正を行うことができます。ノーマルステートはデフォルトのステートであり、オレンジ色をしています。

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 では数字の引数がよく使われます。

上記で説明していないコマンドも多数存在します。基本的には 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 ホットキーを押してください。通常モードと同じホットキーでカーソルを移動できますがテキストが選択されます。カーソルを移動すると最初のカーソル位置からテキストが選択され、yank (コピー) または delete (削除) することができます。vev( などのコマンドを使って素早く単語や文章を選択することが可能です。詳しくは#移動セクションを読んでください。

また、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 を押すことで選択されたバッファが開きます。

ヒント: 通常の移動は h j k l キーを使いますが、場合によっては Ctrl などの修飾キーを使う必要があります。これによって入力と移動が同時に可能となっています。

ノーマルステートからホットキーを使ってバッファを制御することも可能です:

  • 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 - ファイルをコピー
  • + - 新しいディレクトリを作成
ヒント: 強力なファイルマネージャを使いたい場合、#ファイルマネージャ (Ranger) セクションを参照してください。より多くの機能が実装されており、習熟することで Dired を完全に置き換えることができます。
終了

エディタは 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 のドキュメントを参照してください。

ヒント: ルートフォルダを上層に変更したい場合、現在のルートパス (ウィンドウの最初の行) で R を押してください。インラインのファイルナビゲーションが開くので、H で上に移動してから . ディレクトリを選択してください。
ファイルマネージャ (Ranger)

フル機能のファイルマネージャが必要な場合、Ranger が最適でしょう。高速な h j k l による移動やインラインファイルプレビュー、ファイルの操作など便利な機能が多数存在します。また、デフォルトの Dired の挙動 (SPC a d) が改善されます。ranger レイヤーをインストールして SPC a r で起動してください。詳しくは Ranger のドキュメントを参照。カスタマイズオプションや便利なホットキーがあります。

ノート: Ranger を開けない場合、Neotree を閉じてみてください。

ウィンドウ

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 環境では無効化しても問題ありません。以下の手順に従ってください:

  1. SPC f e d を押して Spacemacs の設定ファイルを開いてください。
  2. dotspacemacs-excluded-packages セクションを探してください。
  3. exec-path-from-shell モジュールを追加して、最後のエントリが dotspacemacs-excluded-packages '(exec-path-from-shell) となるようにしてください。
  4. SPC f s で変更を保存して Spacemacs を再起動してください。

マイナーモードアイコンのフォントがおかしい

ⒺⓀ の代わりに 24ba 24c0 記号が表示されたり、あまりにも醜い場合は、 次に、これらのシンボル用の適切な Unicode フォールバック フォントをインストールするか、dotspacemacs-mode-line-unicode-symbolsnil に設定して無効にする必要があります。

ヒント: Spacemacs の優れたフォールバック Unicode フォントは ttf-symbolaAUR です。

Mass "Package is unavailable. Is the package name misspelled" パッケージの更新中にエラーが発生しました

GNU ELPA GPG 鍵の有効期限に関係するかもしれません、 :(setq package-check-signature nil) から M-x package-install を実行してから。gnu-elpa-keyring-update を実行してください。 これがうまくいかない場合は、例えば emacs26-gitAUR を使って emacs 26 にロールバックしてみてください。