サムネイル
2022-06-28
2023-06-22

みなさんは開発環境どんなエディタを使用していますか。
2015年に公開されたVS Code が浸透して以来、ここ5年くらいでIDE環境は VS Code の一強のような状態になってますね。私がプログラムを書き始めたのは2013年くらいからで、始めた当初はWindows で NotePad++ や Crescent Eve を使い、2015 ~ 2019年くらいは今はもう開発終了して VS Code に取り込まれてしまった Adobe の Brackets というエディタを愛用していました。今でも Crescent Eve は見た目がすっきりしていたり文字コードへの対応力から Windows 環境において標準のメモ帳の代替として利用してます。

今はもはやどんな言語の開発だろうと大体 VS Code でやってるしそれで済んでしまうが、エディタ論争の話になると太古の昔から上がるのが Vim。マウスを捨て去った強者たちが CUI のコマンドを使いこなして編集していく、という漠然としたイメージと共に Vimmer という名前の響きにふんわりと憧れを感じ続けていた。
実際、SSH 接続しているサーバー上で、.bashrc やら sshd_config やらのちょっとした設定ファイルを書き換えたり、プロジェクトのディレクトリで作業している間に ちょっと /etc/nginx/ に移動して1ファイルを編集したり… ということをするのに、いちいち VS Code のワークスペースを立ち上げたりなんかしてらんない。そういう環境でとりあえずほとんどネイティブでネットで調べたちょっとの .vimrc を書いただけの Vim で「使いにくいな〜」と思いながらやっていたので、一度ちゃんと勉強して『CUI環境で気軽に使えるテキストエディタ』として、設定ファイルを使い回すだけで誰でも Vim を使い易いものにできるようにすべく設定をまとめた。

本気の Vimmer ではないのでより詳しい諸士は私を刺さずにこっそりより良いものを教えてほしい。

完成イメージ

Neovim のインストール

vim の派生エディタである neovim をインストールします。 UNIX 系の CUI ならほとんど vi か vim がプリインストールされていると思いますがよりモダンな開発指針でプラグインの管理もしやすいのが理由です。 vim だけの話がしたい人は次に飛んでくれ

# for ubuntu
sudo apt install -y neovim
# for macOS
brew install neovim

neovim はコマンドラインから nvim で起動できます。 neovim 入れたらどうせ vi も vim も使わないので alias を変更しちゃいましょう。

alias vi='nvim'

.vimrc, init.vim の用意

私の nvim の設定がここにあります。vim をそのまま使う人は、とりあえずここの .vimrc をそのままコピーするととりあえず幸せになれる(何も設定しないよりは)。

2022.11.25 追記
neovim 単体でのレポジトリは爆破したので、neovim の設定はここ(neovim系)こっち(.vimrc)になりました。追記おわり

プラグインを入れない人はあとはキーコンフィグを確認してくれれば終わりです。

neovim の場合、設定ファイルは .vimrc ではなく ~/.config/nvim/init.vim に置く必要がある。なので、

cd
# .config ディレクトリがなければ作る
mkdir .config
cd .config
git clone git@github.com:7304sk/nvim_setting.git
mv nvim_setting nvim

これだけで neovim の設定ファイルはもう設定完了。neovim の設定は本来 init.vim に書くものだが、私は vim しか使えない環境での使用を考えて vim と共有できる部分は .vimrc に書いて init.vim に読み込んでる。

dein.vim のインストール

dein.vim は日本人の Shougo 氏が作っている vim/neovim 用のプラグインマネージャ。 Shougo さんは他にもめちゃくちゃ vim プラグインを作っている。dein を使うとプラグイン管理が簡単にインストールできるのでインストールする。

curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh ~/.cache/dein

これで dein でプラグインを扱えるようになる。 init.vim に dein を読み込む設定を書く必要があるが私のものにはすでに書いてある。

プラグインを追加するには、dein.toml

[[plugins]]
repo = 'ryanoasis/vim-devicons'

のように書く(上は dev-icons の例)。書き方は大体そのプラグインのサイトに書いてあるので調べよう。
dein_lazy.toml に書くと、 neovim 起動時に読み込まれるのではなくそれぞれに設定したタイミングでプラグインが遅延読み込みされるようになり、起動を早くできる。どのプラグインを lazy loading にしたらいいのかなどはそれぞれ異なるので検索してやり方は調べて欲しい(丸投げ)。

初回起動時は自動で neovim にプラグインがインストールされていくためめちゃくちゃ重いので注意。黒い画面で全然立ち上がらないけどちゃんと待つ。

プラグイン用のフォントをインストール

私の設定している toml では NERDTree や airline といった見た目系のプラグインのために、専用のフォントをインストールする必要がある(しないと文字化けする)。

必要なのは Powerline FontsNERD Fonts

cd # 一応ホームディレクトリで作業
# Powerline
sudo apt install -y fonts-powerline
# debian 系なら上記で入る、それ以外は以下
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
cd ..
rm -rf fonts

# NERD fonts
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts && curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf

mac で iTerm2 を使っているなら、[Preferences] > [Profiles] > [text] で

  • Font に for Powerline と入っている中から好きなもの
  • Non-ASCII Font にHack Nerd Font

Font は自分は Melso LG L DZ for Powerline を使ってます。

これでセットアップは完了。適当に vi コマンドで何かを開いてみれば最初に完成イメージで示したような画面になってるはず。

キーコンフィグ

とりあえずわかりやすいものとして、

  • ノーマルモードでの : と ; を入れ替え
    → コマンド打ちやすくするため(; の方が shift 押さなくていいから)
  • Ctrl + s で保存。インサートモードの時はノーマルモードに戻って保存。command キーのコンフィグは知らないし Linux との共存性から Ctrl 修飾。
  • ノーマルモードで space → z で undo。ノーマルモードの Ctrl 修飾はデフォルトで規定済みのものが多いので、space との組み合わせ修飾で設定すると自由度高い。
    undo の変更履歴はノーマルモードになったタイミングで保存されていくため、ずっとインサートモードでいると undo で一気に戻ってしまう。こまめにノーマルモードに戻っておく癖をつけると良い。
  • redo はノーマルモードで space → y。windows などでの IDE と同じ感覚で使えるのが好みなので y にしている。
  • ノーマルモードで space → f で現在選択している文字列をハイライト検索。
    Ctrl + l でハイライト解除。
  • (neovim のみ)space を2連打で NERDTree の表示/非表示。IDE のように左側にファイルツリーを展開できる。

と設定している。 .vimrc を開いて自分のお好みに直してください。


おわり

前回の記事でもう忘れてるって言ったのにそこから一ヶ月も書かなかったせいでうろ覚えで書いてる。これ見てもできなかったぞコンチクショウとかあったら twitter までグチを飛ばしてください。