Windows + neovim 環境構築
June 02, 2020

Windows + neovim 環境が思った以上に生きやすかったので構築メモを残します!

WSL 環境の構築


1. Windows Store で Ubuntu をインストールします。
Ubuntu Download

2. Windows 側の設定で「Windows 機能」などで下記のような画面を検索し、図の赤い罫線に示されているような WSL の項目にチェックを入れます。
WSL Setting

3. コンソールが立ち上がり username や password の設定が求められると思いますので、設定してください!

ターミナルのインストール


Windows Terminal を入れます。ちなみに Windows Terminal は Fluent TerminalCmderalacritty などその他の選択肢を試したうえで、ものすごく使いやすいと感じました。描画が速い、完璧な使い心地のタブ、各種設定もしやすい、neovimのThemeなども不具合なく描画できる、おまけに日本語入力もできます。

neovim のインストール


1. wsl を起動します。さきほどインストールした Windows Terminal を起動し 「wsl」 と入力すると wsl を起動できます。起動後、僕はここで cd を入力し、 /home/vane11ope に移動しますが、作業スペースは各位に任せます。

2. neovim をインストールします。wsl (ubuntu) の上で作業しているので、何かをインストールする際には 「Windows の人は~」 を無視して 「ubuntu の人は~」 の項目を参照してください。

neovim の設定ファイル


ここからは各位 neovim の設定を楽しむ感じになると思いますが、vim では通常 ~/.vimrc に vimの設定ファイルを書いていると思います。 neovim の設定ファイルは ~/.config/nvim/init.vim に書くのですが、以下のコードを ~/.config/nvim/init.vim に書いておけば ~/.vimrc に置いた .vimrc の設定が neovim でもそのまま使えます。

set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath=&runtimepath
source ~/.vimrc

ちなみに僕のvimの設定はこれです

プログラマはじめたてのときに書いたコピペしまくり整理もまったくしてないほんとにひどい設定ファイルですが、ずーーーーーーっと使っていて不思議とまったく不満ないので一応置いておきます。

なにか動かなくなるとか、あるいは現状はシンプルな設定しかしてませんが、もっと複雑なこと記述したくなったタイミングで書き換えようとは思いますが、現状は予定なしです!そんな複雑な設定書いても覚えられないし。

当該 vimrc にて僕の使っている Theme である deus を同じように使おうとすると、deus.vim をランタイムパス以下に配置しろとか文句言われるので、以下のような手順で解決してください。

1. neovim のランタイムパスを確認する。
neovim を起動し、 :echo $VIMRUNTIME と入力する。
(僕の場合は /usr/share/nvim/runtime とかでした)
vim runtime
vim runtime
2. 1 で得られたパスに cd で移動し、 ls コマンドでディレクトリのファイルを確認すると、必ず colors とかいうディレクトリがあるはず。そのディレクトリ以下にある vim ファイルたち(試しに cd colors から ls でもして確認してみると、現状どの Theme を用いることができるか、配置されている vim ファイルによって確認できると思う)が Theme ファイルとして実行時に読み込まれるので、逆に言えばそこに配置してない Theme は読み込まれない…のでそこに Theme ファイルを配置すれば完了。

3. ご利用のプラグインマネージャ(僕の場合は暗黒美無王が作られた素晴らしき dein)がプラグインを配置する(つまり 2 で配置したい目的となる Theme ファイルも配置されている)ディレクトリから当該 Theme の vim ファイルを 2 の colors 以下に配置する。 ほかのプラグインマネージャに関しては知らないが、dein に関しては以下に配置されている。

~/.cache/dein/repos/github.com/

さらにいうと僕が用いている deus に関しては以下に deus.vim が配置されている。

.cache/dein/repos/github.com/ajmwagar/vim-deus/colors/

4. 3 で得られた vim ファイルを cp で 2 でも確認した実行時に読み込まれる colors ディレクトリにコピーする。 * あくまで僕の環境では下記コマンドでできました。

```
cd /usr/share/nvim/runtime/colors
sudo cp ~/.cache/dein/repos/github.com/ajmwagar/vim-deus/colors/deus.vim .
```

そのほかの便利なツール


fzf
(fuzzy finder)(つまりある程度適当にファイルを探してもなんとなくマッチするファイルを検索してくれる)
fzf
ちなみに vim と組み合わせることもできて、「fuzzy finder で ファイルを検索し、検索したファイルを vim の引数として渡してそのまま編集」みたいな感じになります。とても良いです。
fzf_vim
ag
プロジェクト全文検索用のツール。この分野だと Rust 製の ripgrep もあって、こっちのほうがもはや人気なのかな?わからない。自分は ag を使ってて特に不満ないのでまあまだ使い続けてる。こんな感じ。
ag
ちなみにこれも vim と組み合わせることもできて、「vim 内で ag を呼び出して全文検索し、Quickfix に表示してお好みのファイルを v か h で選択し、それぞれ縦割りか横割りで表示させて編集する」みたいなことができます。こんな感じです。
ag_vim
ctags
タグジャンプ用のツール。
sudo apt install ctags とかでインストールしてください。関数の定義元や変数の宣言元に飛べたりする。こんな感じ。
ctags

まだもう少しある気がするけど思い出せないということは大したことないということでしょう。次行きましょう。

vim の最低限のコマンド


必要最低限のコマンドのみを紹介します。
人生はすべての vim コマンドを紹介しきるにはあまりに短すぎる気がします…。

最重要

:q!
編集内容を破棄し立ち去る。立つ鳥跡を濁さず。

:w
編集内容を保存する。

:wq
編集内容を保存しつつ、ファイルを閉じる。

カーソル移動系

hjkl
それぞれ左下上右にカーソルを移動。 vim を使う醍醐味。
…と個人的には。

w
単語ごと(?)にファイルを進む。なんかとりあえず速い右移動( l )くらいに考えてもらえればと……

b
単語ごと(?)に戻る。なんかとりあえず速い左移動( h )くらいに考えてもらえればと……

gg
ファイルの一行目にジャンプ

G
ファイルの一番下にジャンプ

H
画面の一番上にジャンプ

M
画面の真ん中にジャンプ

L
画面の一番下にジャンプ

/文字列
文字列で検索しn or shift + n でヒットした箇所へ次々とジャンプ

*
カーソル下の文字列が自動的に検索され、n or shift + n でヒットした箇所へ次々とジャンプ

編集系

u
ひとつ前の編集に戻る。undo

ctrl + r
ひとつあとの編集に進む。redo

I
行の先頭までカーソルを移動し、編集

A
行の最後までカーソルを移動し、編集

x
一文字削除

dd
一行削除

D
カーソル以降、行末まで削除

y
一行コピー

p
カーソルの後ろに挿入

P
カーソルの前に挿入

画面分割など

:sp :vs
画面をそれぞれ縦や横に分割

(ctrl + w) + hjklのどれか
分割した画面を移動

(ctrl + w) + T
カーソルが存在する画面をタブとして飛ばす

g + t g + T
タブを行ったり来たりする

……まだまーーーーーーーーーーーーーーーーーーーーーだありますがめんどくさいので最後2つだけ面白いの紹介して終わります。

おまけ

いい感じに整形してくれるコマンド
v で範囲選択してからの =
vim equal

一気に編集するコマンド
V で範囲選択して I で編集、 esc
V Edit

誤植や説明が怪しいところ、そもそも根本的にひどい勘違いや間違いをしているところ、また質問等、いろいろあると思いますが、その際には ヴァネロピ までご一報お願いいたします!!!