Open22

初心者がVS Codeからの移行先としてのNeovimの環境構築をする

Hidden comment
Lafixier RafinantokaLafixier Rafinantoka

プラグインマネージャの導入

等, いくつか見つかったが, 今回は「速い」「高速」と言われていたvim-jetpackにした。

https://github.com/tani/vim-jetpack

https://zenn.dev/dog/articles/jetpack_intro

https://v-sli.me/blog/vim-plugin-manager

Lafixier RafinantokaLafixier Rafinantoka

vim-jetpackリポジトリのinstallationNeovim for Linux and macOSに書いてあるコマンドを実行する

curl -fLo ~/.local/share/nvim/site/pack/jetpack/opt/vim-jetpack/plugin/jetpack.vim --create-dirs https://raw.githubusercontent.com/tani/vim-jetpack/master/plugin/jetpack.vim
Hidden comment
Lafixier RafinantokaLafixier Rafinantoka

~/.config/nvim/init.vimに, vim-jetpackリポジトリのUsageVim-plug styleに書いてあるコードを書き込む

~/.config/nvim/init.vim
packadd vim-jetpack
call jetpack#begin()
Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrap
Jetpack 'https://github.com/dense-analysis/ale'
Jetpack 'junegunn/fzf.vim'
Jetpack 'junegunn/fzf', { 'do': {-> fzf#install()} }
Jetpack 'neoclide/coc.nvim', { 'branch': 'release' }
Jetpack 'neoclide/coc.nvim', { 'branch': 'master', 'do': 'yarn install --frozen-lockfile' }
Jetpack 'vlime/vlime', { 'rtp': 'vim' }
Jetpack 'dracula/vim', { 'as': 'dracula' }
Jetpack 'tpope/vim-fireplace', { 'for': 'clojure' }
call jetpack#end()
Lafixier RafinantokaLafixier Rafinantoka

Neovimを起動すると, 以下の写真の通りSome packages are not synchronized. Run :JetpackSyncと下部に表示されるので実行してみる

先程のinit.vimを作成した後Neovimを起動した直後の画面:

先程のinit.vimを作成した後Neovimを起動した直後の画面

:JetpackSyncと実行して動作が完了した直後の画面:

:JetpackSyncと実行して動作が完了した直後の画面

Lafixier RafinantokaLafixier Rafinantoka

[coc.nvim] build/index.js not found, please install dependencies and compile coc.nvim by: yarn installと下部に表示されてしまう。

[coc.nvim] build/index.js not found, please install dependencies and compile coc.nvim by: yarn install`と下部に表示されるNeovim

Lafixier RafinantokaLafixier Rafinantoka

Nimを書ける環境を整える

プラグインマネージャの導入が済んだので, 以下の記事を参考にNimを書ける環境を整える

https://qiita.com/jiro4989/items/6cf94cec054e50f66dbf

Lafixier RafinantokaLafixier Rafinantoka

必要なプラグインのインストール

設定ファイルを以下のように編集した後Neovimを起動して:JetpackSyncを実行

~/.config/nvim/init.vim
packadd vim-jetpack
call jetpack#begin()
Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrap
Jetpack 'https://github.com/dense-analysis/ale'
Jetpack 'junegunn/fzf.vim'
Jetpack 'junegunn/fzf', { 'do': {-> fzf#install()} }
Jetpack 'neoclide/coc.nvim', { 'branch': 'release' }
Jetpack 'neoclide/coc.nvim', { 'branch': 'master', 'do': 'yarn install --frozen-lockfile' }
Jetpack 'vlime/vlime', { 'rtp': 'vim' }
Jetpack 'dracula/vim', { 'as': 'dracula' }
Jetpack 'tpope/vim-fireplace', { 'for': 'clojure' }
+ Jetpack 'alaviss/nim.nvim'
+ Jetpack 'prabirshrestha/asyncomplete.vim'
call jetpack#end()
Lafixier RafinantokaLafixier Rafinantoka

自動補完を有効化する

設定ファイルを以下のように編集する

~/.config/nvim/init.vim
packadd vim-jetpack
call jetpack#begin()
Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrap
Jetpack 'https://github.com/dense-analysis/ale'
Jetpack 'junegunn/fzf.vim'
Jetpack 'junegunn/fzf', { 'do': {-> fzf#install()} }
Jetpack 'neoclide/coc.nvim', { 'branch': 'release' }
Jetpack 'neoclide/coc.nvim', { 'branch': 'master', 'do': 'yarn install --frozen-lockfile' }
Jetpack 'vlime/vlime', { 'rtp': 'vim' }
Jetpack 'dracula/vim', { 'as': 'dracula' }
Jetpack 'tpope/vim-fireplace', { 'for': 'clojure' }
Jetpack 'alaviss/nim.nvim'
Jetpack 'prabirshrestha/asyncomplete.vim'
call jetpack#end()

+ au User asyncomplete_setup call asyncomplete#register_source({
+     \ 'name': 'nim',
+     \ 'whitelist': ['nim'],
+     \ 'completor': {opt, ctx -> nim#suggest#sug#GetAllCandidates({start, candidates -> asyncomplete#complete(opt['name'], ctx, start, candidates)})}
+     \ })
Lafixier RafinantokaLafixier Rafinantoka

GitHub Copilotを使えるようにする

https://github.com/github/copilot.vim

Lafixier RafinantokaLafixier Rafinantoka

必要なプラグインのインストール

設定ファイルを以下のように編集した後Neovimを起動して:JetpackSyncを実行

~/.config/nvim/init.vim
packadd vim-jetpack
call jetpack#begin()
Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrap
Jetpack 'https://github.com/dense-analysis/ale'
Jetpack 'junegunn/fzf.vim'
Jetpack 'junegunn/fzf', { 'do': {-> fzf#install()} }
Jetpack 'neoclide/coc.nvim', { 'branch': 'release' }
Jetpack 'neoclide/coc.nvim', { 'branch': 'master', 'do': 'yarn install --frozen-lockfile' }
Jetpack 'vlime/vlime', { 'rtp': 'vim' }
Jetpack 'dracula/vim', { 'as': 'dracula' }
Jetpack 'tpope/vim-fireplace', { 'for': 'clojure' }
Jetpack 'alaviss/nim.nvim'
Jetpack 'prabirshrestha/asyncomplete.vim'
+ Jetpack 'github/copilot.vim'
call jetpack#end()

au User asyncomplete_setup call asyncomplete#register_source({
    \ 'name': 'nim',
    \ 'whitelist': ['nim'],
    \ 'completor': {opt, ctx -> nim#suggest#sug#GetAllCandidates({start, candidates -> asyncomplete#complete(opt['name'], ctx, start, candidates)})}
    \ })
Lafixier RafinantokaLafixier Rafinantoka

セットアップ

手順

  1. Neovimを起動して:Copilot setupを実行
  2. 認証コードをコピー
  3. Enterを押すとブラウザが自動的に開かれるので, コピーした認証コードをそこにペーストして認証
  4. ブラウザが開かれなかった場合はリンクをクリックして手動で開き認証
Lafixier RafinantokaLafixier Rafinantoka

ファイラを使えるようにする

fern.vimというファイラ系プラグインを導入する

https://github.com/lambdalisue/fern.vim

Lafixier RafinantokaLafixier Rafinantoka

プラグインのインストール

設定ファイルを以下のように編集した後Neovimを起動して:JetpackSyncを実行

~/.config/nvim/init.vim
packadd vim-jetpack
call jetpack#begin()
Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrap
Jetpack 'https://github.com/dense-analysis/ale'
Jetpack 'junegunn/fzf.vim'
Jetpack 'junegunn/fzf', { 'do': {-> fzf#install()} }
Jetpack 'neoclide/coc.nvim', { 'branch': 'release' }
Jetpack 'neoclide/coc.nvim', { 'branch': 'master', 'do': 'yarn install --frozen-lockfile' }
Jetpack 'vlime/vlime', { 'rtp': 'vim' }
Jetpack 'dracula/vim', { 'as': 'dracula' }
Jetpack 'tpope/vim-fireplace', { 'for': 'clojure' }
Jetpack 'alaviss/nim.nvim'
Jetpack 'prabirshrestha/asyncomplete.vim'
Jetpack 'github/copilot.vim'
+ Jetpack 'lambdalisue/fern.vim'
call jetpack#end()

au User asyncomplete_setup call asyncomplete#register_source({
    \ 'name': 'nim',
    \ 'whitelist': ['nim'],
    \ 'completor': {opt, ctx -> nim#suggest#sug#GetAllCandidates({start, candidates -> asyncomplete#complete(opt['name'], ctx, start, candidates)})}
    \ })