かわろぐ

技術、セキュリティ、その他もろもろ

MENU

Vim の起動に何に時間がかかっているか調べ、改善する

環境

  • MacOSX 10.14.5
  • nvim 0.3.7
  • MacBook 2017 1.4GHz

Vimの起動がもっさりな原因を調べる

現在は nvim を使っていますが、Vimを使いだしてからかれこれ10年近くが経過しています。

プラグインとかもマネージャは変わりつつもずっと昔から入れているものもあり、Vimの起動が結構もっさりするようになってしまいました。

その原因を調査するために、何に時間がかかっているのかを調査しました。

プラグインの有無で起動時間を比較してみる

プラグインを無効化する —noplugin オプションと —startuptime オプションを使います。

後者のstartuptime を使うには vim が +startuptime でコンパイルされている必要があります。私の環境(homebrewでインストールしたnvim)では初期状態で有効になっていました。

まずは、プラグインや自分で加えた設定を何も読み込まない状態、おそらく最も早いであろう状態を調べましょう。

$ nvim —noplugin —startuptime {filename}

この状態で私の環境の nvim は 300ms くらい起動にかかりました。体感速度的にも普段より少し早い気がします。 それでは次に、プラグインなどすべて読み込んだ状態を測定してみましょう。

$ nvim —startuptime {filename}

上記のオプションで nvim を起動すると filename に指定したファイルに起動処理の間のメッセージや経過時間を出力してくれます。この状態で私の nvim は 360ms ~ 1707ms かかっていました。

少々幅がありますが、毎回時間が書かているのはどうやら clipboard.vim の読み込みのようです。

309.745  233.180  233.180: sourcing /usr/local/Cellar/neovim/0.3.7_1/share/nvim/runtime/autoload/provider/clipboard.vim
310.345  234.289  001.109: sourcing /Users/kawamura/.vim/dein/.cache/init.vim/.dein/plugin/fakeclip.vim

fakeclip.vim は環境的にもう無くても何ら問題ないことがわかったので、削除しましたが、一つ上の clipboard.vim は nvim 標準の機能のようなのでこれ以上の起動高速化はむりかなぁ。

後日時間を取って調査してみよう。

参考文献

Practical Vim: Edit Text at the Speed of Thought (English Edition)

Practical Vim: Edit Text at the Speed of Thought (English Edition)

Vim を NeoVim に入れ替えた話

f:id:kawa_xxx:20171029091720p:plain

環境

  • Mac OSX 10.12.6
  • neovim  v0.2.0

NeoVim って?

20年以上に渡って開発し続けられている VIm のフォークプロジェクトです。公式ページによるとレガシーなコードを大々的にリファクタリングし、新しいプラグインシステムを導入するための Vim の進化版と言われています。

Vim  を NeoVim へ

さて、 Mac OS で HomeBrew の入っている環境であればインストール自体はすごく簡単で以下のコマンド一発で終わりです。

$ brew install neovim

インストール後は設定ファイルをまずは vim と共有させて使っていくための準備をします。NeoVim は XDG Configuration に対応しているので従来の vim 設定ファイルの位置から少し変更があります。以下のコマンドで既存の vim の設定ファイルへのシンボリックリンクを作成しました。

$ mkdir ~/config/nvim
$ ln -s ~/path-to-the-vimrc/.vimrc ~/config/nvim/init.vim

Vim を使ってきて長年継ぎ足ししてきた設定ファイルをそのまま NeoVim の設定ファイルとして使用した。でも発生したエラーは1件だけでした。

Unknown Option: ttymouse=xterm2

これは NeoVim では削除されたオプションなので、以下のように読み込まれないようにするだけ。

if !has(‘nvim’)
    set ttymouse=xterm2
endif

Vim よりも若干高速になったように感じます。それにしても後方互換凄いなー。今度は Unite.vim を denite.vim に入れ替えようと思います。

参考文献

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

Vimで画面分割(縦横)のレイアウトを変更する方法

環境

  • Vim 8.0.124

画面分割のレイアウトを変更する

Vimは画面分割をできて、レイアウトを入れ替える事もできるんです。ただそんなに頻繁に使わないコマンドでよく忘れるから備忘録を兼ねて記しておきます。

Vim を起動すると通常は1つのバッファがあります。まずは、画面分割するために何か文字を入力して、以下のコマンドを入力します。すると以下の図の様に、上下に画面が分割された状態で新しいバッファが表示されます。

:new

f:id:kawa_xxx:20170805143410p:plain:w300

これを左右に分割された状態にするには以下のコマンドを入力します。

<C-w> H

f:id:kawa_xxx:20170805143415p:plain:w300

元の上下の分割に戻したい場合は以下のコマンドを入力すれば戻ります。

<C-w>K

f:id:kawa_xxx:20170805143405p:plain:w300

画面分割を入れ替えるコマンドの H と K は大文字なので Shift キーを押しながら入力してください。

こういう普段使わないけど、ふとした時に使いたいコマンドってなかなか覚えられないんですよね…

参考文献

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

MacVim でアップデートに失敗した話

環境

  • MacVim 7.4
  • Mac OS X 10.12.2

MacVim から更新失敗

お正月休みを利用して、古くなった環境を見直して新しくしている一環でMacVimも最新のものにしようと試みました。

MacVim を開くと 8.0 へ更新出来るようなダイアログは表示されるのですが…

f:id:kawa_xxx:20170107173553p:plain:w300

archiveの展開で失敗しているのか、何度やっても以下の様にエラーダイアログが表示されるだけ… エラーログも出ていなければ、ググってもこれと言って解決策が見つかりませんでした。

f:id:kawa_xxx:20170107173557p:plain:w300

Github からダウンロードした

原因不明ですし、頑張って解決するよりインストールし直したほうが早そうなのでgithub からダウンロードして入れ直しました。

f:id:kawa_xxx:20170107173605p:plain:w300

するとすんなり 8.0 へ切り替えられました。めでたしめでたし。

Vim でゴミ (.un~) ファイルが出来るのを抑制する方法

しばらく古いまま使っていた Vim を正月休みを利用して新しいバージョンにしました。

すると、ファイル毎に保存するともりもり変なファイルを作ってくれて鬱陶しいので、同じディレクトリ内に生成されないようにしました。

環境

  • Vim 7.4.769
  • MacOSX 10.12.2

.un~ ファイルってなに?

Vimが終了しても undo の情報を引き継ぐためのファイルのようです。

Vim 本家では7.3 から、Kaoriyaさん で配布しているVimでは 7.4.227 からこのファイルが保存時に作成される様になったようです。

完全に無効化する

以下を無効化したいセッションや、 .vimrc に記述すると .un~ ファイルが作られなくなります。

set noundofile

別の場所に出力する

この機能、ディレクトリを指定してあげれば、別の場所にまとめて出力するという設定ができます。

私は、undo の履歴をセッションをまたいで引き継ぐ様にはしたいけど、同じディレクトリに出力されると ls などで見づらいし、うっかり間違って git 等でコミットしてしまいそうなのでこの方法を取りました。

.vimrc に記述すると .un~ ファイルが指定したディレクトリにまとめて生成されるようになります。

set undodir=~/var/vim/undofile

これで作業ディレクトリは大量の undo ファイルに汚されずに済むようになりました。めでたしめでたし。

Vim 8 にもしたかったんですが、アップデートが失敗するのでまた今度ためそう。

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

参考文献