最近 neovim を使い始めていて、vim を使ってる時から気になってた問題に向き合うことにした。この問題がどんな内容かというと
“ vim ファイルでのコメント
といったコメントを記入していてカーソルが行の最後に来た時、エンターキーを入力して改行するはずである。その時に
“ vim ファイルでのコメント “
といった感じで、カーソルの前にコメント文字が勝手に入力されてしまうことである。
この問題を全てのファイルフォーマットに対して解決したかった。ググってみると沢山の情報が出てきた。例えば init.vim
に
set fo-=c fo-=r fo-=o
を記入すると解決するみたいな内容ばかりで、実際にはどれも解決しなかった。それで Twitter 上でいじけてると、通りすがりの暗黒美無王さんから次のようなヒントをもらった。
それの設定無効化は結構面倒で私はafter/ftplugin.vimに書いてます。
— 暗黒美無王 dark Vim (@ShougoMatsu) April 16, 2020
なぜかというと、ftpluginが設定を上書きしてしまったりするからです
.config/nvim/after/ftplugin.vim
を作って、このファイルの中に設定を書くと runtime や何かしらの vim plugin で定義されてる設定を上書きすることが可能になるとのこと。
早速上記の設定を書いたが何も変わらなかった。本当にロードされているのかを :verbose set fo?
を入力して確認するとファイルのロードはされてるが、設定が反映されてなかった。もっとググってみると、真の解決方法が示された stack exchange のページにたどり着いた。
https://vi.stackexchange.com/a/1985
内容は、上記の方法だけだと機能しないので FileType イベントを使ってファイルがロードされた時にセットするようにしましょうとの事。
au FileType * set fo-=c fo-=r fo-=o
これを記述すると無事にどのファイルでもコメントの問題が発生しなくなった!やったー!!
c, r, o が formatoptions に含まれてないことが分かる。