HPCメモ

HPC(High Performance Computing)に関連したりしなかったりすることのメモ書き

macvimからVimR(neovim)へ移行しました。

マカーになって以来、エディタはずっとmacvimを使ってたんですが、

という謎の現象が起きてて、しかもこれ明確に発生条件が絞り込めたのは、 行末から右移動しようとしたとき だけですが、 これ以外の状況でもちょくちょくフリーズしてました。

profileを取ると、よく槍玉に挙げられてるHighlight_Matching_Pairが最上位に居たんですが、こちらで紹介されていた paren-match pluginを導入しても挙動は変わらず*1

qiita.com

そもそも、プラグインを無効化したり、.vimrcを読まないで起動しても同じ現象が起きてたので 駄目元でneovimを導入してみたら、あっさり解決しましたo......rz

というわけで、急遽 macvimからneovim(のフロントエンドであるところのvimR)へ移行することにしたので作業内容をまとめておきます。

インストール

brew install vimr

設定の移行

こちらの記事を参考に

qiita.com

まずは、.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でも何か設定してたような気がするんですが、思い出せないのでこちらの記事にあった空文字挿入の設定を追加してみます。

hamaco.hatenablog.jp

まず、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とか色々設定していないのがあるんですが まぁその辺は公式のドキュメントにもあるので、おいおいやっていこうかと思います。

*1:プロファイラの結果は変わっていたので、正常に機能はしている

*2:記事中では、Neovim用のコマンドを実行=neovim用のディレクトリにplug.vimを再ダウンロードしているようですが、 vim用と同じものなので同じマシン内でコピーしました

*3:公式のドキュメントだとyarnを使えってなってるけど、npm installでももちろん大丈夫