LoginSignup
0
0

More than 3 years have passed since last update.

vimでJava言語用のポップアップ表示を設定する。

Last updated at Posted at 2020-09-06

まずはじめに、、、私は派遣社員だ。
そのため、派遣先への面接時に、営業が同席する。
その営業が私の意見を無視して勝手に話を進めるため、あれよあれよでその派遣先が決まることがある。
派遣社員になった以上、人間を捨てているが、ちょっと勘弁して欲しい。

と言うことで、次はJava言語案件になるかもしれない。
と言うことは、Java言語を勉強し直す必要が出てきた。
しかし、Java言語関係の本は、使わないと思い、実家に置いたままだ。
仕方ないため、初学本から買い増しすることにした。
何冊何種類の初学本を買えば済むのか・・・できればKindle本を買うつもりなのだが、見にくいため、どうしても紙の本になる。
何か良い対策はないだろう。

※表題は"Java言語用"としているが、あまりJavaに関係ない。

本題

初学向けのプログラミングであれば、仰々しいIDEは絶対にいらない。
そんな環境構築をする暇があるならば、少しでも勉強する時間に充てたい。
如何せん。
Vimを使いこなせないため、未だにIDE並の構築が出来ていないままだった。
これを機に、Language Server Protocol(略:LSP)を導入しようと思う。

LSPとは。

入力途中を自動補完などで完結してくれる機能のことだと思う。
そう思って導入することを決めた。

難しいことはしたくない

IDE環境を用意するのはめんどくさいので、既にインストール済みのVimにちょこっと手を加えるだけで環境構築したいと思っている。
そのため、難しいことや時間が掛かることはしたくない。
と言うことで、上記mattn氏の導入コストを下げるプラグインを使うことにした。

実際のLSP導入

簡単にできるとのことなので、mattn氏の説明通りに進めることにした。

前提

プラグイン管理は、minpacを使っている。

プラグイン導入

1行で済むのか、2行必要なのか、、、とりあえず、簡単に導入できると思っていた。

vimrc
call minpac#add('prabirshrestha/vim-lsp')
call minpac#add('mattn/vim-lsp-settings')

んで、exコマンドライン上で、

コマンド
call minpac#update()

を打ち込む。
そうすることで、プラグインが導入される。
これだけですごく便利になっている。

設定ファイルの書き換え

vimrcへの書き込みも必要だ。

vimrc
" ファイルの変更に伴いリアルタイムにエラー表示する機能 
let g:lsp_diagnostics_enabled = 1
let g:lsp_diagnostics_echo_cursor = 1

" 自動で入力補完ポップアップを表示する設定
let g:asyncomplete_auto_popup = 1
let g:asyncomplete_auto_completeopt = 1

" ポップアップを表示するまでのディレイ
let g:asyncomplete_popup_delay = 200

" LSP の仕様である textEdit を有効にする設定
let g:lsp_text_edit_enabled = 1

let g:lsp_signs_enabled = 1
let g:lsp_diagnostics_echo_cursor = 1

mattnさんは、設定ファイルを分割しているようだが、私はしていない。
そのため、vimrcに書き込んでいるのだが、問題ないと思っている。

母艦も大事

vim-lspが母艦になるようで、これを入れなければ、エラーになる。

エラー
Error detected while processing User Autocommands for "lsp_setup":
E117: Unknown function: lsp#register_server

vim-lsp_Err.jpg

エラーは避けたい

母艦のプラグインを導入せずに作業を進めたことで、エラーになってしまった。

エラー
BufRead Autocommands for "*.java"..FileType Autocommands for "java"..function <SNR>8_vim_lsp_load_or_suggest[105]..
User Autocommands for "lsp_setup" の処理中にエラーが検出されました:
E117: 未知の関数です: lsp#register_server

lsp-setup-filetype_Err.jpg

きちんと説明は読むようにしよう。

他にも

minpac-update_err.jpg

プラグイン管理用のプラグインにエラーが発生してしまったが、これは既に修正済みのようだ。

Javaファイルを開く

拡張子が*.javaになっているファイルを開く。
そして、

Exコマンド
LspInstallServer

installj-eclipse-jdt-ls.jpg

プログラミングファイルに応じたファイルがインストールされる仕組みになっているため、Yesを押下することで、インストール完了まで待てば良い。

java-installer-jdtls.jpg

完了した。

個人的に文字コードがおかしい・・・が、それは別の機会に見直そう。
UTF-8にしたはずだが・・・。

C++言語には未対応

よく分からないが、導入できないプログラミングファイルもあるようだ。

拡張子.cpp

C++言語ファイルを開く

cpp-ls-clangd.jpg

導入を進められるため、素直に従った。

install-clangd.jpg

当然Yesだ。

unxz-command-not-found.jpg

しかし、インストールに失敗した。
これは、必要なコマンドが見つからなかったかららしい。
そのため、私の環境に問題があるのかもしれないが、今はJava環境さえ整えれば良いため、先送り。

実際の恩恵にあずかれず。

おかしい。
自動補完が一切動かない。

Popupが全く表示されない。

おかしい。

mattnさんの設定には、

vimrc
if empty(globpath(&rtp, 'autoload/lsp.vim'))
 ・
 ・
 ・

function! s:on_lsp_buffer_enabled() abort
 ・
 ・
 ・

augroup lsp_install
 ・
 ・
 ・

が書いてあったが、これいるの?
これを記述することで、設定ファイルが崩されてしまったのだが・・・。

解決(ポップアップ表示)

別途プラグインが必要だった。

asyncomplete.vim

説明が英語なので、必要なプラグインとは思わなかった。

vimrc
"   オートコンプリートポップアップメニュー表示
call minpac#add('prabirshrestha/asyncomplete.vim')
"   オートコンプリートソース
call minpac#add('prabirshrestha/asyncomplete-lsp.vim')

この2種類が必要なようだ。

asyncomplete.jpg

意図していないポップアップ表示がなされ、ちょっと不快だ。
今回の例で言えば、"System"を入力したいのだが、 S を入力した時点で、"Saf〜ナンチャラ"が自動入力される。
無茶苦茶不便。
やりたいことは、"S"入力時点で、何も入力されず、候補をポップアップ表示して欲しい。
困る。

asyncomplete.vim

表示方法は、nvimの方がよさげに見えるが・・・。
今更本体を乗り換えることはしない。

一応完成

上記の不満はあるが、一応は設定したと言うことにする。
まだまだJava言語の勉強をvim本体だけで完結するにはほど遠いが、今回の記事はこれで終わる。
ゆくゆくは、実行やデバッグなども出来るようにしたい。
※このポップアップ表示の設定をするためだけに今日1日潰してしまった。
あぁIDEが恋しい。

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0