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

RLS(Rust Language Server)をVimで使う

$
0
0

前提

MacOSX or Linux環境でのみ動作確認しました。
RustはNightly(1.17)前提です。

$ rustup default nightly

RLSのビルドとセットアップ

$cd$HOME$ git clone https://github.com/rust-lang-nursery/rls.git
$cd rls
$ cargo build --release

.bash_profileあたりに環境変数を設定しておきます。

export LD_LIBRARY_PATH=$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib
export RLS_ROOT=/PATH/TO/rls

標準ライブラリのメタデータをダウンロードしておきます。

$ rustup component add rust-analysis

動かしてみます

$ cargo run --release --manifest-path=$HOME/rls/Cargo.toml
    Finished release [optimized] target(s) in 0.1 secs     Running `codereading/rls/target/release/rls`Content-Length: 60{"jsonrpc": "2.0", "id": 1, "method": "exit", "params": {}}$

動きました。デフォルトだと標準入力からコマンドを受け付けているようです。

Vimの設定

Language Serverとのやりとりには prabirshrestha/vim-lspを使います。

.vimrc
call plug#begin('~/.vim/plugged')
Plug 'prabirshrestha/async.vim'
Plug 'prabirshrestha/vim-lsp'call plug#end()

Vimを起動してプラグインをインストールします。

:PlugInstall

RLS用にftpluginを追加します。
https://raw.githubusercontent.com/prabirshrestha/vim-lsp/master/example.vim
これを編集して、 $HOME/.vim/ftplugin/rust/rls.vimあたりに保存します。

以下を追加。パスは適当に修正してください。

.vim/ftplugin/rust/rls.vim
function!s:get_root_uri_for_rust()returns:path_to_uri(expand('~/rls'))" cloneしたrlsのディレクトリendfunctionfunction!s:get_lsp_server_cmd_for_rust()return ['rustup','run','nightly','cargo','run','--release','--manifest-path=/home/vagrant/rls/Cargo.toml']
endfunction

VimでRustのファイルを開いたときにRLSが動いてるか確認

$ ps aux | grep cargo
vagrant  14348  0.0  0.4  28876  8920 ?        Ss   15:11   0:00 rustup run nightly cargo run --release --manifest-path=/home/vagrant/rls/Cargo.toml

OK

使ってみる

適当なワードにカーソルを合わせて以下を入力すると定義位置にジャンプできます。

:GoToDefinition

$HOME/.vim/ftplugin/rust/rls.vimをもう少し改造してさらに使いやすくできるのではないでしょうか。

以上です。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



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