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

Vim(NeoVim)でSwift -プラグイン, LSPの導入まで-

$
0
0

こんにちは
みなさん, Vim(NeoVim)やってらっしゃいますでしょうか.

私は最近になってようやくvimを真面目に触り始めました.
普段(?)swiftを書いているのですが,vimでもXcodeばりに補完やハイライトができると嬉しいなと思い,設定してみました.
deopleteを使った記事はあったのですが,coc.nvimを使ったものはなさそうなので,記事にしました.

環境

  • OS: macOS Mojave 10.14.6
  • NeoVim: NVIM v0.4.2, Build type: Release, LuaJIT 2.0.5
  • Swift: Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7)
  • Xcode: Version 11.0 (11A420a)

プラグインマネージャはvim-plugを使っています.
シンプルで使いやすいです.
vim-plugの導入方法はググるとすぐ出てくるので割愛します.

シンタックスハイライト

swiftはデフォルトではハイライトされないため,構文ファイルを作る,またはプラグインを導入する必要があります.
今回は以下のプラグインを使います.

keith/swift.vim

インストール

init.vimに以下を記述します.

init.vim
call plug#begin('~/.vim/plugged'):" 👇これを記述
Plug 'keith/swift.vim':call plug#end()

セーブしてneovimを起動, :PlugInstallでインストールされます.
これでシンタックスハイライトが効くようになりました.

補完

vimで補完機能を有効にするに当たって,いくつか選択肢があります.

  • deoplete
  • coc.nvim
  • vim-lsp

精査はしていないですが,coc.nvimがスター数も多く,設定も直感的であったため,coc.nvimを使うことにしました.
coc.nvim

deopleteはよくわかりませんが,coc.nvimとvim-lspはLanguage-Server-Clientという点で,補完のアプローチはほとんど同じだと思います.

coc.nvimはtypescriptで実装されており,vim-lspはvimscriptで実装されています.
vimだけで完結させたい方はvim-lspの方が良いかもしれません.

coc.nvimのインストール

init.vimに以下を記述します.

init.vim
call plug#begin('~/.vim/plugged'):" 👇これを記述
Plug 'neoclide/coc.nvim',{'branch':'release'}

Plug 'keith/swift.vim':call plug#end()

セーブしてneovimを起動, :PlugInstallでインストールされます.

インストール後は:Coc*系のコマンドが使えるようになります.
:CocConfigでcocの設定ファイルを開き,そこに設定を書いていくといった流れになります.

Language-Server-Protocolの導入

coc.nvimはlanguage-server-clientであるため,単体では意味をなさず,言語ごとのlanguage-server-protocol(以下LSP)を動かす必要があります.
swiftのLSPとしてSourceKit-LSPがあるのでそれを利用します.

sourcekit-lspのインストール

ソースからbuildします.(Swift5.1以上が必要)

適当なディレクトリでhttps://github.com/apple/sourcekit-lsp.gitをcloneします.
その後sourcekit-lspに移動し,buildします.
実行ファイルのあるディレクトリに移動し,./sourcekit-lspを実行してエラーが起きなければインストール完了です.
sourcekit-lspの実行ファイルをpathが通っているディレクトリに置いておく方が良いかもしれません.

以下は実行するコマンドです.

$ git clone https://github.com/apple/sourcekit-lsp.git
$ cd sourcekit-lsp
$ swift build -c release 👈 そこそこ時間がかかります
$ mv .build/release/sourcekit-lsp /usr/local/bin 👈 やらなくてもヨシ

cocの設定

neovimを起動します.
:CocConfigでcocの設定ファイルを開き以下を記述します.

coc-settings.json
{"suggest.enablePreselect":true,"languageserver":{"swift":{"command":"<sourcekit-lspの絶対パス>","filetypes":["swift"]}}}

お疲れ様でした!
これでswiftの補完が効くようになりました👍

また,他の言語でもLSPを用意すれば補完やコードジャンプなどができるようになります.
LSPの例として

  • ruby: solargraph
  • python: pyls

などがあります.

閑話

設定したのはいいものの,果たしてVimでSwiftを書くタイミングはくるのか?
iOSアプリ開発であればXcode一択なのでは...

References

vscodeでswift5.1のSourceKit-LSPを動かす


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>