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 の設定を完全に置き換える必要があります:
$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
Adobe Source Pro フォントのインストール (任意)
Spacemacs が使用するデフォルトフォントは Adobe の Source Code Pro です。Spacemacs を使用するときはフォントをインストールすることが推奨されています。adobe-source-code-pro-fonts パッケージをインストールしてください。
フォントが存在しない場合、他のフォントが使われます。
Spacemacs の初期設定
Spacemacs を起動してください:
$ emacs
最初にインストールする機能について質問されます。選択は必須です。選択によって Spacemacs の挙動やホットキーが変わります。Enter を押してデフォルトの値を使うことを推奨します。デフォルト設定は高度に最適化されており後で自由に変えることもできます。
質問を終えると、Spacemacs は必要なパッケージをダウンロード・インストールします。数分はかかります。Spacemacs がフリーズしているかのように見えるかもしれませんが、問題はありません。
Spacemacs の実行
spacemacs を起動するには:
$ emacs
下のバーに '...' が表示されなくなったら Spacemacs を使用できます。
デーモンモード
Spacemacs はデーモンモードで起動することもできます。デーモンモードはエディタを一度だけ初期化して、後から設定ファイルを再読込することなく接続して使うことが可能です。巨大な設定ファイルを使っている場合、初期化が一度だけですむので便利です。初期化してしまえばすぐに接続することができます。
デーモンモードで Spacemacs を起動するには:
$ emacs --daemon=instance1
emacsclient を使って instance1
に接続できます:
$ emacsclient -nc -s instance1
使用方法
最初 Spacemacs は多少使いづらいかもしれません (特に初心者にとっては)。しかしながら、努力は報われます。基本的な作業をこなすのに覚えておく必要があることはほんの少しです。
:q[Enter] と打ち込むことでいつでも spacemacs を終了できます。
ビルトインチュートリアル
Spacemacs で SPC h T
と押すことでいつでも Spacemacs に組み込まれているチュートリアルを立ち上げることができます。
基本概念
準備
基本概念を説明するのにお試し用のテキストが必要です。最初に作成しましょう。現段階ではコマンドがよく分からなくても結構です。
- Spacemacs を実行
SPC b N
を押して新しい空のバッファを作成9 SPC i l l
を押してテキストを挿入
9行のテキストが生成されるはずです。作成したテキストを使って次のセクションで説明しているコマンドを試してみてください。
最初にステートについて説明します。
エディタステート
The major difference between Spacemacs and regular text editor is states. Each state changes the way how the editor works. For example, there is an insert state, where you able to enter text (like in a regular text editor), and there is a normal state, where all your keypresses are used as commands, and doesn't change the actual text. Only one state can be active at the time. Switching between the states is the key skill to use Spacemacs successfully.
Current editor state is displayed in a left bottom corner. It have a form of colored rectangle with text "1" (by default). The color describes the current state. There are a lot of states, but only a few of them are used regularly:
- Orange. This is normal state. Used for entering commands and text navigation.
- Green. This is insert state. Used for a text input.
- Grey. This is visual state. Used for selecting chunks of text and controlling them.
You can also check the cursor color for the current state.
ノーマルステート
Normal state is used for text navigation and running commands. You can't directly enter text in this mode. Instead, you able to quickly navigate and make any sort of corrections there. Normal state is default state, and it has orange color.
You can always return to normal state by pressing ESC
key or fd
key sequence if you accidentally leave it.
移動
以下のキーを使うことで基本的な移動が可能です:
h
- 1文字分だけ左にカーソルを移動j
- 1文字分だけ下にカーソルを移動k
- 1文字分だけ上にカーソルを移動l
- 1文字分だけ右にカーソルを移動
It's also possible to navigate between the words or even sentences with single key:
w
- move to next word (beginning)b
- move to previous word (beginning)(
- move to the beginning of current sentence)
- move to the beginning of next sentence^
- move to beginning of line$
- move to the end of line
To scroll the pages, use the following commands:
Ctrl+f
- move one page downCtrl+b
- move one page upgg
- goto first line of the documentG
- goto last line of the document
You can also use numbers with commands, so they would repeat n times:
5j
- move cursor five lines down7w
- move cursor seven words forward3 Ctrl+f
- move three pages down20gg
- move cursor to line with number 20
There are a lot of commands uncovered. Basicaly, you can navigate between everything in Spacemacs, thanks to Vim-like flow. Check the additional resources to get the details.
テキスト操作
以下のコマンドでテキストを編集することができます:
x
- cut the symbol under cursordw
- cut the word under cursordd
- cut the line under cursoryw
- copy (yank) the word under cursoryd
- copy (yank) the line under cursorp
- paste copied/cut textra
- replace the symbol under cursor to a
You can also use numeric arguments there.
アンドゥ/リドゥ
You can undo and redo changes with the following commands:
u
- undo last changeCtrl+r
- redo last change
挿入ステート
Insert state is used for the text input. It's very closed to regular editor behavior. However, the ability to modify text is limited. You will need to switch back to the normal state in order to make corrections. The color of insert state is green.
挿入ステートに移行
To enter the insert state, press i
from the normal state. Your cursor will changed to thin and green one. Now you can type something. When you ready, just leave the insert state by pressing ESC
key or fd
key sequence.
There are a lot of ways to enter insert mode. The difference, however, is only related to initial cursor position. It would be enough to know just i
hotkey for the first time. But there are also the others, and they will be very useful when you master them:
i
- enter insert mode before the cursora
- enter insert mode after the cursorI
- enter insert mode at the beginning of the lineA
- enter insert mode at the end of the lineo
- enter insert mode at next lineO
- enter insert mode at previous line
挿入ステートから離脱
To leave the insert state press ESC
key or fd
key sequence. You will return to normal state and cursor will change to orange.
ビジュアルステート
This state used for visual text selection. It allows to select text chunks and cut/copy them. The state color is grey.
To enter visual state press v
hotkey from the normal mode. Then you can navigate around using normal mode hotkeys with only one difference: text selection. Cursor movements would select text, based on initial cursor position, and you can y
ank (copy) or d
elete it later. Remember, that you can use commands like ve
or v(
to quickly select words or sentences. Check the Normal state: Navigation
section to get the idea.
You can also press V
to quickly select the whole line.
ビジュアルブロックステート
Visual block state is more powerful version of visual state. It allows to select text in columns. It's similar to multi-cursor concept on regular editors and IDEs. This state can be entered by pressing Ctrl+v
hotkey. Then you can navigate with h j k l
keys to see the difference.
There a lot of stuff that can be done in visual block state. Refer to the additional resources for this information. This feature is called vim visual block mode in origin.
バッファ (タブ)
The text in Spacemacs located in the areas called buffers. They are very similar to regular editor tabs. You can switch between the buffers and create new ones. Buffers are also used by editor itself by storing some information you can inspect later.
操作
To show the list of the current buffers press SPC b b
. You will see a new window at the bottom. This is a place you can inspect, filter, and navigate buffers. Some buffers already exist there, like *Messages* and *scratch*. They created by the editor and contain some useful information.
The first thing you can do with the bottom window is to type anything into pattern
field. This will filter buffers. If there are no buffers left after the filtering, you can create new one instead, just pressing "Enter" after your input. New buffer will be created and opened.
You can also open any buffer by hand. Press Ctrl+j
or Ctrl+k
to navigate between the lines. Then press Ctrl+l
or Enter
to confirm your choice. Selected buffer will be opened.
You can also use some hotkeys from normal state to control buffers:
SPC b b
- list buffersSPC TAB
- switch to last viewed bufferSPC b n
- switch to next buffer (one forward)SPC b p
- switch to previous buffer (one backward)SPC f s
- save current bufferSPC b d
- close current buffer
ファイル
Spacemacs provides a two options for file navigation: inline navigation and build-in file manager. Inline navigation is used in Spacemacs confirmation dialogs and it's very similar to the shell one. Build-in file manager is more user-friendly and allows to check the file details. Learning the basics of each is the essential key of mastering Spacemacs.
There also advanced options available, like more powerful file manager and file tree. They are covered in Advanced
section.
インライン (Helm)
Inline navigation available with SPC f f
hotkey. It uses the window very similar to buffer-navigation one. You can filter and select files there. Just type anything to narrow results, or press Ctrl+j
or Ctrl+k
for moving the line down and up. Press Ctrl+l
to open file or directory, and press Ctrl+h
for going backward. Press TAB
to autocomplete the input.
ファイルマネージャ (Dired)
If you need more visual method, run built-in file manager by pressing SPC a d
Enter
. You can navigate, using Ctrl
+h j k l
keys, and press Enter
to enter directories and open files.
There are some hotkeys available (refer to dired documentation for more):
q
- quit diredR
- rename fileC
- copy file+
- create new directory
上級概念
At this step you are able to open files, make changes and save them successfully. Half the way is done, and now you can choose what to master next. There are some sections you may be interested.
レイヤー
One of the strongest features of Spacemacs is layers. Layer is a set of packages and configuration options, that greatly extends editor functionality in some way. There are layers for different programming languages, for example, or layers, providing additional tools (like IRC messaging, or integrated web browser). The full list of layers can be found at Layers documentation page.
Some layers are already shipped with Spacemacs, the others can be added manually. To do this, open Spacemacs configuration file (SPC f e d
), and find dotspacemacs-configuration-layers
section there. Then simply add selected layer to the list and restart Spacemacs. It will download all the required files on the next start.
Spacemacs will also offer you to install a new layer when you open a file with already-known extension. For example, if you open .html
file, installation of html
layer will be offered.
You can customize layer behaviour by overriding some layer-specific variables in your Spacemacs configuration file. Check the appropriate layer documentation to get the details.
ファイル操作
There are some additional tools for file navigation. They may greatly increase the way you use Spacemacs on a daily basis.
ファイルツリー (Neotree)
You can run file tree by pressing SPC f t
. New window opens, accessible with SPC 0
. Standard h j k l
navigation is available there. You can change root folder with R
and toggle hidden files with s
. Create new files with c
and rename the old ones with r
. Check Neotree documentation for the details.
ファイルマネージャ (Ranger)
If you need a full-featured file manager then Ranger may be the best choice. A lot of useful features are available there, like an instant h j k l
navigation, inline file preview and ability to manipulate files. It also improves default Dired behaviour (SPC a d
) a bit. Install ranger
layer and run it with SPC a r
. Check Ranger documentation for the details. Along with customization options, there are a lot of useful hotkeys.
ウィンドウ
Spacemacs allows you to split the screen into the separate windows. Each window has a personal number and can be accessed with SPC n
hotkey, where the n
is a selected number. Windows can be splitted individually, so it gives an ability to create complex layouts.
Some of windows hotkeys are presented below. Check the inline help (SPC w
) to get more.
SPC w 3
- focus window with number 3SPC w s
- split window horizontallySPC w v
- split window verticallySPC w d
- delete windowSPC w u
- undo last window actionSPC w m
- toggle window fullscreenSPC w .
- enter window transient state
トラブルシューティング
起動が遅い
起動時間が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 を再起動してください。