まずはじめに、、、私は派遣社員だ。
そのため、派遣先への面接時に、営業が同席する。
その営業が私の意見を無視して勝手に話を進めるため、あれよあれよでその派遣先が決まることがある。
派遣社員になった以上、人間を捨てているが、ちょっと勘弁して欲しい。
と言うことで、次はJava言語案件になるかもしれない。
と言うことは、Java言語を勉強し直す必要が出てきた。
しかし、Java言語関係の本は、使わないと思い、実家に置いたままだ。
仕方ないため、初学本から買い増しすることにした。
何冊何種類の初学本を買えば済むのか・・・できればKindle本を買うつもりなのだが、見にくいため、どうしても紙の本になる。
何か良い対策はないだろう。
※表題は"Java言語用"としているが、あまりJavaに関係ない。
本題
初学向けのプログラミングであれば、仰々しいIDEは絶対にいらない。
そんな環境構築をする暇があるならば、少しでも勉強する時間に充てたい。
如何せん。
Vimを使いこなせないため、未だにIDE並の構築が出来ていないままだった。
これを機に、Language Server Protocol(略:LSP)を導入しようと思う。
LSPとは。
入力途中を自動補完などで完結してくれる機能のことだと思う。
そう思って導入することを決めた。
難しいことはしたくない
IDE環境を用意するのはめんどくさいので、既にインストール済みのVimにちょこっと手を加えるだけで環境構築したいと思っている。
そのため、難しいことや時間が掛かることはしたくない。
と言うことで、上記mattn氏の導入コストを下げるプラグインを使うことにした。
実際のLSP導入
簡単にできるとのことなので、mattn氏の説明通りに進めることにした。
前提
プラグイン管理は、minpacを使っている。
プラグイン導入
1行で済むのか、2行必要なのか、、、とりあえず、簡単に導入できると思っていた。
call minpac#add('prabirshrestha/vim-lsp')call minpac#add('mattn/vim-lsp-settings')
んで、exコマンドライン上で、
call minpac#update()
を打ち込む。
そうすることで、プラグインが導入される。
これだけですごく便利になっている。
設定ファイルの書き換え
vimrcへの書き込みも必要だ。
" ファイルの変更に伴いリアルタイムにエラー表示する機能 letg:lsp_diagnostics_enabled=1letg:lsp_diagnostics_echo_cursor=1" 自動で入力補完ポップアップを表示する設定letg:asyncomplete_auto_popup=1letg:asyncomplete_auto_completeopt=0" ポップアップを表示するまでのディレイletg:asyncomplete_popup_delay=200" LSP の仕様である textEdit を有効にする設定letg:lsp_text_edit_enabled=1letg:lsp_signs_enabled=1letg:lsp_diagnostics_echo_cursor=1
mattnさんは、設定ファイルを分割しているようだが、私はしていない。
そのため、vimrcに書き込んでいるのだが、問題ないと思っている。
母艦も大事
vim-lspが母艦になるようで、これを入れなければ、エラーになる。
Error detected while processing User Autocommands for"lsp_setup":
E117: Unknown function: lsp#register_server
エラーは避けたい
母艦のプラグインを導入せずに作業を進めたことで、エラーになってしまった。
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
きちんと説明は読むようにしよう。
他にも
プラグイン管理用のプラグインにエラーが発生してしまったが、これは既に修正済みのようだ。
Javaファイルを開く
拡張子が*.javaになっているファイルを開く。
そして、
LspInstallServer
プログラミングファイルに応じたファイルがインストールされる仕組みになっているため、Yes
を押下することで、インストール完了まで待てば良い。
完了した。
個人的に文字コードがおかしい・・・が、それは別の機会に見直そう。
UTF-8にしたはずだが・・・。
C++言語には未対応
よく分からないが、導入できないプログラミングファイルもあるようだ。
拡張子.cpp
C++言語ファイルを開く
導入を進められるため、素直に従った。
当然Yesだ。
しかし、インストールに失敗した。
これは、必要なコマンドが見つからなかったかららしい。
そのため、私の環境に問題があるのかもしれないが、今はJava環境さえ整えれば良いため、先送り。
実際の恩恵にあずかれず。
おかしい。
自動補完が一切動かない。
Popupが全く表示されない。
おかしい。
mattnさんの設定には、
if empty(globpath(&rtp,'autoload/lsp.vim')) ・
・
・
function!s:on_lsp_buffer_enabled() abort
・
・
・
augroup lsp_install
・
・
・
が書いてあったが、これいるの?
これを記述することで、設定ファイルが崩されてしまったのだが・・・。
解決(ポップアップ表示)
別途プラグインが必要だった。
asyncomplete.vim
説明が英語なので、必要なプラグインとは思わなかった。
" オートコンプリートポップアップメニュー表示call minpac#add('prabirshrestha/asyncomplete.vim')" オートコンプリートソースcall minpac#add('prabirshrestha/asyncomplete-lsp.vim')
この2種類が必要なようだ。
意図していないポップアップ表示がなされ、ちょっと不快だ。
今回の例で言えば、"System"を入力したいのだが、 Sを入力した時点で、"Saf〜ナンチャラ"が自動入力される。
無茶苦茶不便。
やりたいことは、"S"入力時点で、何も入力されず、候補をポップアップ表示して欲しい。
困る。
asyncomplete.vim
表示方法は、nvimの方がよさげに見えるが・・・。
今更本体を乗り換えることはしない。
一応完成
上記の不満はあるが、一応は設定したと言うことにする。
まだまだJava言語の勉強をvim本体だけで完結するにはほど遠いが、今回の記事はこれで終わる。
ゆくゆくは、実行やデバッグなども出来るようにしたい。
※このポップアップ表示の設定をするためだけに今日1日潰してしまった。
あぁIDEが恋しい。
以上。