マカーになって以来、エディタはずっとmacvimを使ってたんですが、
vimで行末にカーソルがある時に、lキーを押すとしばらく固まるんだけど、これ何が原因だろ?
— n_so5 (@n_so5) 2023年4月17日
という謎の現象が起きてて、しかもこれ明確に発生条件が絞り込めたのは、 行末から右移動しようとしたとき
だけですが、
これ以外の状況でもちょくちょくフリーズしてました。
profileを取ると、よく槍玉に挙げられてるHighlight_Matching_Pairが最上位に居たんですが、こちらで紹介されていた paren-match pluginを導入しても挙動は変わらず*1
そもそも、プラグインを無効化したり、.vimrcを読まないで起動しても同じ現象が起きてたので 駄目元でneovimを導入してみたら、あっさり解決しましたo......rz
というわけで、急遽 macvimからneovim(のフロントエンドであるところのvimR)へ移行することにしたので作業内容をまとめておきます。
インストール
brew install vimr
設定の移行
こちらの記事を参考に
まずは、.vimrc をそのままneovimのinit.vimへコピーします。
mkdir -p ~/.config/nvim cp ~/.vimrc ~/.config/nvim/init.vim
続いて(私もこちらの記事の方と同じくPlugでプラグイン管理をしているので)、plug.vimをコピーします。 *2
mkdir -p ~/.local/share/nvim/site/autoload/ cp ~/.vim/autoload/plug.vim ~/.local/share/nvim/site/autoload/
ここで一旦、vimRを起動するとcolor schemaは効いてないは、 横に勝手にファイラーが追加されてていんたーねっとには公開し難いはと散々な状態です。
が、まぁとりあえず :PlugInstall
しときましょう。
続いて、 settings
メニューへ行き
- General タブ -> After Last Window Closes を Quit に変更
- Toolsタブ -> File BrowserとMarkdown Previewのチェックを外す
- Appearanceタブ -> Default Fontを Monaco の18ポイントに変更
と変更します。
ここまでやって気付いたけど、これ .gvimrc に書いた設定が読まれてないだけみたいですね。
というわけで.gvimrcに入れていた設定のうち、フォントまわり以外を突っ込みます。
if has("gui_vimr") " カラースキームの設定 set t_Co=256 let g:solarized_termtrans=0 let g:solarized_bold=0 let g:solarized_underline=0 let g:solarized_italic=0 let g:solarized_visibility='high' set background=light colorscheme solarized "カーソル形状 set guicursor=a:blinkon0 " コマンドラインの高さ(GUI使用時) set cmdheight=1 set laststatus=2 " ビジュアル選択(D&D他)を自動的にクリップボードへ (:help guioptions_a) set guioptions+=a set mouse=a "Input Method関係の設定 (IME on時の余計な改行とかを防ぐ) set iminsert=0 set imsearch=-1 endif
set guioptions+=a
は効いてないっぽいですが、ビジュアル選択した状態で
Ctrl-Cすれば普通にコピーできるので、当面はyankと使い分けていきます。
プラグインの変更
さて、これでもうエディタとしては問題無く使えるのですが ついでに前述の記事で紹介されてたプラグインを入れてみましょう。
markdown-preview
まず、previmを markdown-preview に変更します。
次の行*3を追加して、:PlugInstall
します。
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && npm install' }
それから、previm関連のプラグイン(私の場合はprevimとopen-browser)の行を削除して、:PlugClean
します。
これで適当なmarkdownファイルを開いて :MarkdownPreview
すると、htmlでレンダリングされた結果がブラウザで表示されます。終了する時は :MarkdownPreviewStop
としてください。
vimRにはmarkdownを表示する機能がもともとついていますが、画像が表示されなかったり、エディタと表示サイズが(縦方向に)揃えられてしまって、見難いなど色々と難がありました。しかも、こちらのプラグインを使うとmarkdownファイル側のカーソル位置に追従してhtmlの表示位置を変更してくれます!!!
previmにも無かった機能ですが、これがあるとめっちゃ便利そうなのでこの機に乗り換えてみました。
AquaSKKの設定
VimRでAquaSKKから日本語入力していると、文字種切り替え(q,l, C-jなど)がVimRにもわたってしまうようで qやら改行やらが入った文章を後から直す羽目に、ちょっと面倒です。
macvimでも何か設定してたような気がするんですが、思い出せないのでこちらの記事にあった空文字挿入の設定を追加してみます。
まず、VimRのbundleIDを調べるために、ターミナルでlsappinfoします。
lsappinfo info VimR "VimR" ASN:0x0-0x1146145: bundleID="com.qvacua.VimR" bundle path="/Applications/VimR.app" executable path="/Applications/VimR.app/Contents/MacOS/VimR" pid = 84650 type="Foreground" flavor=3 Version="20230103.174333" fileType="APPL" creator="????" Arch=ARM64 parentASN=ASN:0x1-0x14aa8: launch time = 2023/04/18 14:27:23 ( 1 hours, 1 minutes, 51.2144 seconds ago ) checkin time = 2023/04/18 14:27:23 ( 1 hours, 1 minutes, 51.0431 seconds ago ) launch to checkin time: 0.171407 seconds
もし表示されなかったら、引数無しで実行してlessにでも流して、それっぽいエントリを探してくださいw
さて、bundleIDが "com.qvacua.VimR"だと分かったので、aquaSKKの環境設定を開いて 互換性タブに行き [追加]ボタンをクリックしてから新しい行に"com.qvacua.VimR"を入力します。 あと、空文字挿入の列にチェックを入れれば設定完了です。
これで、VimR上で日本語の文字種を切り替えたり、英語-日本語を行き来しても 余計な文字が入力されることはなくなりました。
おわりに
という感じで、急遽macvimからVimRへ乗り換えてみたのですが これまであったストレスフルな挙動が全部解消して、めっちゃ楽になりました。
あとは、gitのmergetoolとか色々設定していないのがあるんですが まぁその辺は公式のドキュメントにもあるので、おいおいやっていこうかと思います。