neovimを導入した備忘録
neovimの導入にかなり手こずったので、次回思い出すためのメモ。
プラグイン追加したら、追記していくかも。
インストールしたもの
neovim
GitHub - neovim/neovim: Vim-fork focused on extensibility and usability
brew install
した
現状のinit.vimはこんな感じ
"プラグイン packadd vim-jetpack call jetpack#begin() Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrap Jetpack 'neoclide/coc.nvim', { 'branch': 'release' } Jetpack 'EdenEast/nightfox.nvim' Jetpack 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} call jetpack#end() "設定 syntax enable colorscheme nightfox lua <<EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, }, } EOF
LLVM
LLVM を Mac にインストール - solareenlo
この記事を参考に brew install
した
- PATHを通す
- shellを再起動
を忘れずに。(忘れていて「あれ〜動かないぞ〜」をやってました)
LLVM自体が何かはよく分かっていない。「C++に必要ななんやかんやがたくさん入ってるやつ」くらいの認識。今回はclangdというものが欲しかったので入れた
iTerm2
iTerm2 - macOS Terminal Replacement
デフォルトのターミナルだと、あとから紹介するシンタックスハイライト用のnightfoxがうまく動かなかったのでこちらをインストール。
bear
https://github.com/rizsotto/Bear
makefileからcompile_commands.jsonを生成するツール 。
bear -- make
でmakefileからcompile_commands.jsonを生成してくれる。
compile_commands.json はcoc.nvimを使って補完をする時に必要らしい。
free: free.cpp g++ -std=c++17 -Wall -O2 free.cpp -o free
compile_commands.json
[ { "arguments": [ "/usr/local/bin/g++", "-c", "-std=c++17", "-Wall", "-O2", "-I", ".", "-I", "/作業ディレクトリのパス/ac-library", "-o", "free", "free.cpp" ], "directory": "/作業ディレクトリのパス", "file": "/作業ディレクトリのパス/free.cpp", "output": "/作業ディレクトリのパス/free" } ]
インストールしたもの(neovimプラグイン関係)
vim-jetpack(パッケージマネージャー)
GitHub - tani/vim-jetpack: The lightning-fast plugin manager, alternative to vim-plug
上記のInstallationのコマンドを実行しただけだったはず、、
パッケージマネージャーについてはこの記事を参考にした。
Vimのプラグインマネージャの種類と選び方 - Qiita
結局、自分のような初心者は動きさえすれば、なんでもよい(あとから変更できる)ので、
- 利用者が多い
- 簡単に使えそう
あたりで選んだ。書き方が簡単そうなvim-jetpack(vim-plugの後継?)にした
プラグインをインストールする時は、以下のように Jetpack [プラグイン名]
みたいな感じで init.vim に追記して、 :JetpackSync
を実行する
coc.nvim
GitHub - neoclide/coc.nvim: Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers. neovim用のlanguage server protocolのクライアント。そもそもlanguage server protocol(以下、LSP)は何かというと、以下の記事が詳しい。(よく分かってないので丸投げ)
language server protocolについて (前編) - Qiita
補完、整形、構文チェックなどの、コーディング支援的なやつをプロトコル化して、導入しやすくしようね。みたいな理解。
これを入れておくと、細かい設定がなくても上記のようなコーディング支援を一発でインストールできるので、自分みたいな初心者にはピッタリかも。
:CocConfig
で設定ファイルをいじれる。
coc-clangd
https://github.com/clangd/coc-clangd
coc.nvimが入っていれば、 :CocInstall coc-clangd
するだけ(だったはず)。上記のQuickStartに色々書いてあるが、LLVMインストール済みでPATHが通ってれば、他の作業は不要なはず。
これを入れて、makefileつくってcompile_commands.jsonをつくれば、以下のような感じで補完がきくようになってるはず
ただし、C++での競技プログラミングで使っている #include <bits/stdc++.h>
のヘッダーがclangにはないので、その設定をする必要がある。
clang++ -xc++ -fsyntax-only -v /dev/null
を打つと、clangがヘッダーファイルを探しに行く場所が分かるので、そのどこかにbitsディレクトリをつくって、 stdc++.h
ヘッダーを置く。以下の記事を参考に。
clang で bits/stdc++.h を使う - Qiita
ここまでくれば、標準ライブラリの補完はすべてOK。
multisetとかで補完きいてるか確かめてみる。
nvim-treesitter
https://github.com/nvim-treesitter/nvim-treesitter
よく分かってない。詳しい説明はこちら。
日常に彩りを加える nvim-treesitter の設定術
今回は、「関数に対してシンタックスハイライトをつけたい」というモチベーションで導入。
インストールしたあと、以下を init.vim に追記。
syntax enable colorscheme nightfox lua <<EOF require'nvim-treesitter.configs'.setup { highlight = { enable = true, }, } EOF ~
nightfox.nvim
https://github.com/EdenEast/nightfox.nvim
デフォルトのシンタックスハイライトを変更したくて導入。
init.vimに colorscheme nightfox
を追記する。こんな感じになる。
気になる
気になってるもの。追記したりするかも。
- tmux