Vimでもエラーメッセージ表示をテキストエリアに表示できるようにする

nvimで出来るのにvimだと出来ない?

coc-nvimを使用したときにnvimではerror/warning文がテキストエリア(window)に表示されるのにvimでは表示されないことがありました。

こんな感じのやつ

import
const Manage = () =>{ // E: Expression expected.  ←コレが出ない

コレは単純に「vimのバージョンが低い」ことが原因でした。

coc-nvimが求めているvimのバージョン

公式で求めているバージョンは以下です。

github.com

Quick Start
Make sure use Vim >= 8.1.1719 or Neovim >= 0.4.0.

Install nodejs >= 14.14:

そしてUbuntuクリップボードを使えるようにするのに一般的?なのがvim-gtkをインストールすることだと思います。

aptで入るのはv8.2です。私はとりあえずこれを使用していました。

このことから取り敢えずプラグインを使えば全部使えるんでしょ?と思い込んでいましたが、一部の機能は使うことが出来ませんでした。

それが最初に話していたエラー文が表示されるやつです。

nvimだといけるのになんで?と試行錯誤

実際のところapt install neovimではいるnvim(v0.6.1)では出来ていて、vimだけ出来ないということで色々調べてみましたが同じ症状の人が見つかりませんでした。

私はMacでも開発をするのでMacでも使用できるようにプラグインを導入してみることにして試してみたところMacだと上手く行っていました。

Macのほうはbrew installしたVim(v9.0)

このことから最終的にVimのバージョンを上げることで解決しました。

ここにたどり着くまでにVimの構成ごと壊してしまい起動できなくなったこともありました。(vim-tinyごと飛ばした)

おかげでnanoの使い方がわかりました(今更)

ですので、同じ状況の人の参考になればと思い書かせていただきました。

ちなみに

立ち上げるたびにエラーが出るようになったんだが?という方はプラグインを一部読まないような形にしながら試していくと原因が見えると思います。

私の場合はindentLineを無効化したらエラーがなくなり、最終的な原因は以下の設定でした

エラー内容

BufWinEnter Autocommands for "*"..function <SNR>147_Setup[6]..<SNR>147_IndentLinesEnable[11]..<SNR>147_SetConcealOption の処理中にエラーが検出されました:

.vimrc

let g:indentLine_concealcursor = 0

これを消したらエラーは消えました。

バージョンのあげかた

最後にVimのバージョンを上げる方法だけさらりと書いて終わります。

まず、リポジトリを追加して

sudo add-apt-repository ppa:jonathonf/vim

次にアップグレードをして完了です

sudo apt upgrade

ちなみにこれ単体ではクリップボードを使えないので、make installしたくないけど使いたい方は以下のようにgvimを入れるとバージョンを維持しながらクリップボードを使えるようになると思います。

sudo apt install vim-gtk3