EmacsとVimしたい(VSpaceCode

VSpaceCodeは、VS CodeでSpacemacsを使えるようにするプラグインです。 基本的にはEmacs操作したいけど、たまにVim操作するために慣れておきたいというひとにはもってこいだと思います。

画面構成の名称

Emacs

VS Code

buffer

editor

window

editor group

frame

window

EmacsとVS Codeでは画面構成の名称が異なります。 Conventionsに対応表が載っていました。

よく使うキーバインド

キーバインド

操作内容

SPC SPC

Command Palette

Ctrl + g / ESC

Cancel

SPC g s

Magit status

SPC f f

Open file/folder

SPC w /

Split window right

SPC w w

Focus next window

SPC b b

Show all buffers

SPC j l

Jump to line (EASYMOTION)

モードを切り替えたい

Vimのようにモード切り替えできます。

NORMALモード(Esc

閲覧・編集モードです。 j / k / l / hでカーソルを操作できます。 また、コマンドモードとも呼ばれ、各種コマンドを使って編集できます。 iaなどの挿入コマンドを押すとINSERTモードに入り変わります。

INSERTモード(i / a / o /)

挿入モードです。文字を入力できます。 VSpaceCodeの場合、ここがEmacs操作の出番です。 Escキーを押すとNORMALモードに切り替わります。

VISUALモード(v / V

矩形選択モードです。 範囲を選択して、コマンド操作できます。 VSpaceCodeではあまり出番がありません。 このモードに入ってしまったら、とりあえずEscを押してNORMALモードに切り替えます。

注釈

すぐに書き込めないのは不便ですが、読むモードと書くモードを切り替えるのは、いまの作業に集中するのにも役立つかなと思っています。 Emacsでも読み取りモード(ctr-x + ctr-q)を愛用してました。 そのときはステータスラインに色をつけて、視覚的にモードを区別できるようにしてました。 VSpaceCodeでもそれをしたい・・・が、やりかたわからない。

モードごとにステータスバーに色をつけたい

{
    "vim.statusBarColorControl": true,
}

モード別にステータスバーの色を変更できます。 設定項目でvim.statusBarColorControlを有効にするか、 settings.json"vim.statusBarColorControl": trueを追記します。

色をカスタマイズしたい

{
    "vim.statusBarColorControl": true,
    // "vim.statusBarColors.モード名": ["#背景色", "#文字色"]
    "vim.statusBarColors.normal": ["#e27878", "#161821"],
    "vim.statusBarColors.insert": ["#84a0c6", "#161821"],
    "vim.statusBarColors.visual": ["#a093c7", "#161821"],
    "vim.statusBarColors.visualline": ["#a093c7", "#161821"],
    "vim.statusBarColors.visualblock": ["#a093c7", "#161821"],
    "vim.statusBarColors.replace": ["#e2a478", "#161821"],
    // "vim.statusBarColors.commandlineinprogress": ["#818596", "#161821"],
    // "vim.statusBarColors.searchinprogressmode": ["#818596", "#161821"],
    // "vim.statusBarColors.easymotionmode": ["#818596", "#161821"],
    // "vim.statusBarColors.easymotioninputmode": ["#818596", "#161821"],
    // "vim.statusBarColors.surroundinputmode": ["#818596", "#161821"],
}

モードごとの色をカスタマイズできます。 normalは書き込みNGなので赤系、insertは書き込みOKなので青系、visualは紫系、とすることにして、 Icebergというテーマを好んで使っているので、 そのパレットから色を選択しました。