Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

まじで最&高のvim環境を作りたい

$
0
0

どうも、プログラミングを始めて一年ちょいくらいの初心者エンジニアです
普段はscalaを主に書いていて、ちょこちょこAngularとかも書いてます

両方vimを使って書いてますが、定義元ジャンプとか補完機能とかはやっぱりIDEとかVScodeの熱いプラグインが優秀すぎて。。。

じゃぁそっち使えよって話なんですが、基本的なターミナルでの操作がしっかりできるようになるまではIDEじゃなくてemacsとかvim使おうって会社のCTOに言われたので今はvimで開発しています

でもやっぱり強い補完機能、定義元ジャンプ、構文エラーくらいは教えて欲しい。。。

そしたら最近vim-metalsとかいうプラグインが激アツとの情報が流れてきたので入れてみたんですが神すぎたので共有します

環境
OS      MacOS
vimのプラグイン管理Plug
terminalhyper
言語Scala

※ただちゃんと理解はできていないのでおかしいところあったら教えてください:bow_tone1:

それでは早速インストールしていきましょうー!!
Vim・Metals

JDKのバージョン確認

$ java -versionopenjdk version {1.8系}

JDKのバージョンが8系であることを確認してください
9から上はサポートされてないらしいのでもしバージョンが違う場合はJDK8に変えてください

Vimのバージョン確認

$ vim --version | headVIM - Vi IMproved 8.1 (2018 May 18, compiled Feb 19 2019 12:07:03)

vimのバージョンは8.1以上じゃないとダメらしいので確認してください

coc.nvimのダウンロード

Langage Serverっていう各言語ごとの、補完、定義元ジャンプ、ソースコードのエラー解析みたいな機能を提供してくれるものがあるらしく(IDEも要するにこれを使ってあの最強の環境を実現してると)
それらをまとめて管理できるものを入れないといけない(そゆわけでもないのかな)
いくつかあるんだけど一番人気なのはこれらしい

https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md
LSP(Langage Server Protocol)っていう各言語ごとの補完とかを提供する際の規約をMicroSoftがちょっと前に定めたらしい。

ちょっとよくわからない。

まぁいいやとりあえずインストール

#coc.nvimを使うにはnode.jsが必要なので入れるのと
#yarnで拡張機能を管理できるので入れる
$curl -sL install-node.now.sh/lts | sh
$curl --compressed-o--L https://yarnpkg.com/install.sh | bash

できたらPlugっていうvimプラグイン管理ツールを使ってcoc.nvimをInstall
ない人は入れてください
vim-plug導入

" ~/.vimrc" Configuration for vim-plug
Plug 'derekwyatt/vim-scala'
Plug 'neoclide/coc.nvim',{'do':{-> coc#util#install()}}" Configuration for vim-scalaauBufRead,BufNewFile *.sbt setfiletype=scala

そんで:PlugInstallしてください

できたら~/.vim/coc-settings.jsonに以下を追記してください

{"languageserver":{"metals":{"command":"metals-vim","rootPatterns":["build.sbt"],"filetypes":["scala","sbt"]}}}

次にCoursierっていうコマンドラインインターフェースを使って最新のMetalsをビルドします

# Make sure to use coursier v1.1.0-M9 or newer.
$curl -L-o coursier https://git.io/coursier
$chmod +x coursier
$./coursier bootstrap \--java-opt-Xss4m\--java-opt-Xms100m\--java-opt-Dmetals.client=coc.nvim \
  org.scalameta:metals_2.12:0.5.2 \-r bintray:scalacenter/releases \-r sonatype:snapshots \-o /usr/local/bin/metals-vim -f

できたらいけてるはず

Scalaのプロジェクトを開いてみる

初めてbuild.sbtを開くとビルドをインポートしますかって聞かれるので1と入力する
スクリーンショット 2019-05-25 22.50.37.png
頑張ってる
スクリーンショット 2019-05-25 22.53.49.png
でけた
スクリーンショット 2019-05-25 22.54.37.png

vimが最&高に近づいてることを確認

スクリーンショット 2019-05-25 22.58.11.png
怒ってくれた

Importとか
スクリーンショット 2019-05-25 23.03.20.png
こんな手厚い補完が...
選択すると
スクリーンショット 2019-05-25 23.03.29.png
全部書いてくれる。マジすばらしい
それだけじゃない!!
スクリーンショット 2019-05-25 23.05.25.png
なんとわざわざimport書かなくても、、、、、
スクリーンショット 2019-05-25 23.05.50.png
オートインポートしてくれる

しかもしかも!
メソッドの補完までしっかりと。
スクリーンショット 2019-05-25 23.06.23.png
importのソートもしてくれる
:SortScalaImports
ってコマンド打つとimportを言語の規定に沿ってsortしてくれる(いまいちわからんけど)
スクリーンショット 2019-05-25 23.10.36.png

.vimrcファイルに以下を追記して

" Remap keys for gotos
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent>gr<Plug>(coc-references)

Futureのsuccessfulメソッドの上でgdとかやると
スクリーンショット 2019-05-25 23.41.33.png
GOD
スクリーンショット 2019-05-25 23.41.54.png

最&高に近づいたね

今回の記事に関係するリンクは以下です
Vim・Metals
vim-plug導入
https://github.com/blueshirts/darcula
https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md
あなたの sbt update を爆速にする sbt-coursier の紹介
https://hyper.is/


Viewing all articles
Browse latest Browse all 5608

Trending Articles