.vimrcのミニマイズについての考察
先日、LingrでVimが遅いという話になり、
KoRoNさんのVimの起動が遅い場合の原因と対策ページが紹介されたのをROMってました。
私の.vimrcは自分なりにチューニングを行って早くしているつもりではありますが、
可読性を意識して設定しているため、遅くなる設定になっていました。
ただ、遅くなるのは望んだ結果ではないため、JavaScript/CSSでよく見るミニマイズを行うとどうなるのか興味がわいたので調べました。
検証方法は以前ネットサーフィンをしている際に見つけた id:thincaさんのvimrc のどこが重いのかを調べるもう1つの方法のページに記載れている方法で試したいと思います。
まずはプログラムを組まずに手頃に出来る"set"処理部分のみをミニマイズしました(手動力)
その結果を見る限りでも起動を短縮出来ている事が伺えます。
まだ、誰もやっていないか調べて、やって無さそうだったら(なぜやらないのか)も含めて調べて
コード書いてみようかなと思います。
サンプルコード
.vimrc profiling. 100 startup total average time.
検証結果
.vimrc_normal
MBA $ sh vimrcStartTimeChecker.sh .000596 MBA $ sh vimrcStartTimeChecker.sh .000597 MBA $ sh vimrcStartTimeChecker.sh .000598
.vimrc_min
MBA $ sh vimrcStartTimeChecker.sh .000535 MBA $ sh vimrcStartTimeChecker.sh .000507 MBA $ sh vimrcStartTimeChecker.sh .000484
感想
50行程度のset処理でゴクゴク僅かではありますが、処理時間に差異が出ました。
予想どうり雀の涙程度でしたが...。
もう少し処理する行数を増やせばいい感じに効果が期待できるかもです。
momonga.vim #6 で mkmkしてきた
初めてのVim系勉強会で緊張している中、会場であるドワンゴさんを訪問しました。
ドワンゴさんの会場は綺麗でとっても広くて羨ましく感じました。(かなり)
今日は以前作成したvim-qfsignsにジャンプ機能を追加がメインな感じでした。
以前、signはジャンプ出来るから良いと言いながら、ジャンプ機能を提供していなかった事に最近気づいたので、さくっと機能を追加しました。
あとは、vim-refのソースを読んだり、
XMLとSQLの整形方法についてネットで調べて.vimrcに設定追加を行いました。
追加機能 release note
vim-qfsignsにジャンプ機能追加
vim-qfsignsで設定されるsignを対象にジャンプ機能を提供するcommandを追加しました。
vim-qfsignsに(画面分割)オートジャンプ機能追加
Syntaxエラー時に該当行にオートジャンプする機能を実装しました。
および画面を横分割してオートジャンプする機能を実装しました。
どちらもデフォルトオフとしてます。
感想 Impressions
『Vimmer こわい』はウソでした(要出典)。
初めてのmkmk会で緊張しつつ、楽しくコーディングできました。
会社や家とはまた違ったコーディングが楽しめて良かったです。
vim-refは頑張れば、参照するマニュアルを制御出来そうでしたが、設定が難しそうだったので、
今はまだその時ではないと結論づけました。(まる)
vim-precious がいい感じ
背景 Background
PHPのテンプレートファイルを修正する際に、インデントがうまくいかない問題に悩まされていました。当初は下記記事を参考にインデントを行っていましたが、vim-preciousを活用することでsyntax等々含めて問題解決するのではと思い、設定してみました。
設定 Setting
感想 Impressions
常々問題なく動いてて、これで私もテンプレートファイルをイジイジできそうです。
HTMLの正規表現がまだ若干ツメきれていないのが心残りですね。基本的には問題なく動く事は確認しましたが、HTMLタグの始まり"<"でinsertモードに変更してもfiletypeがhtmlに変更されません。こちらはおいおい、正規表現を調整したいと思います。
Laravelに触れてみる
背景 Background
herokuがPHPサポートしたという事なので、Laravelをインストールしてみたいと思い、まずはLaravelをMac上で動かしてみたいと思います。
目標 Goal
- Laravelのインストール
環境 Environment
手順 Operation
Composerのインストール @ Mac OS X
PHPの外部ライブラリ管理アプリです。PEAR、GitHubなど分散していライブリ群をComposerの設定ファイルに記載する事で、簡単に利用できます。
$ brew search composer $ brew info composer $ brew install composer
MCrypt PHP Extensionのインストール @ Mac OS X
Laravel4 - 始めよう/インストール/サーバ要件に記載があるため、インストールします。
$ brew search Mcrypt libtomcrypt mcrypt php53-mcrypt php54-mcrypt php55-mcrypt php56-mcrypt $ php --version PHP 5.5.12 (cli) (built: May 3 2014 00:13:45) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans $ brew info php55-mcrypt $ brew info mcrypt $ brew info mhash $ brew install php55-mcrypt
Laravelのインストール
Laravel4 - 始めよう/インストールのページを参考に作業を進めます。
$ composer create-project laravel/laravel {ProjectName} --prefer-dist
動作確認
Apache等の設定を変更して動作確認を行います。
参考サイト Reference
続・MacVim インストール
背景 Background
以前「Installed Vim7.4 for Mac」にてMacVimをインストールしましたが、その際に各言語サポートが"dyn(amic)"で設定されました。特に問題無いだろうと思っていましたが、厳密には言語サポートが機能していませんでした。
具体的にはPerlの読み込みパスが"OS X Lion"と"OS X Mountain Lion"で異なります。"OS X Mountain Lion"では"OS X Lion"でサポートしていたバージョンが未インストールです。
MacVimの"+perl/dyn"は"OS X Lion"の古いバージョンを読み込むため、エラーとなります。
そこで、splhackさんのソースをforkして、supermomongaさんのソースを参考にmabu版も作成してみました。
Vim の 言語サポート状況確認
" Perl :perl VIM::Msg("Hello") " Python :python print(sys.version) " Python3 :python3 print(sys.version) " Ruby :ruby print "Hello" " Lua :lua print("Hello")
課題点
PythonとPython3の両立が出来ませんでした。両立しようとすると"dyn(amic)"が強制されるようです。
homebrewでインストールしているため、MacVimの読み込みパス上にPython(3)がないため、エラーとなるような動きをしていました。
とりあえず、Pythonを優先して、Python3は非サポートという形で対処しました。
homebrew の Apache 自動起動設定
背景 Background
以前『
Installed Apache@MacOSX』の記事でhomebrewでApacheをインストールしましたが、
Apache が自動起動せず、デフォルトの Apache が起動しました。
デフォルトの Apache の自動起動を停止させ、 homebrew の Apache を自動起動させた際の備忘録を残します。
手順 Operation
デフォルトの Apache 自動起動停止
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
homebrew でインストールした Apache 自動起動設定
sudo chown root:wheel /usr/local/opt/httpd/homebrew.mxcl.httpd.plist sudo ln -s /usr/local/opt/httpd/homebrew.mxcl.httpd.plist /System/Library/LaunchDaemons/homebrew.mxcl.httpd.plist sudo launchctl load -w /System/Library/LaunchDaemons/homebrew.mxcl.httpd.plist
この段階で Apache が自動起動しない場合には plist の起動コマンド部分を書き換えます。
参考サイト Reference
vim-qfstatusline を作ってみた
背景 Background
前回『vim-qfsigns を作った』でSyntaxエラー箇所にsignでマーキングさせました。
今回はステータスバーにSyntaxエラー状況を表示させます。
私はid:itchynyさん作のlightline.vimを使用しているのですが、
syntasticでSyntaxチェックを行いエラーの場合にはステータスバーにエラーの発生している行数を出力できる事を最近知りました。
綺麗で見やすいため、vim-watchdogsにも同様の機能を提供したいと思います。
syntasticとlightline.vimを使用している方は下記記事並びにlightline.vimのREADME.mdに一度目を通した方が良いかと思います。
手順 Operation
plugin概要 plugin summary
-
前回同様にid:osyo-mangaさんの作成したpluginをfolkし、新規に作成したpluginを起動できるように設定をちょこっと修正しました。
(2014/06/15:追記)本体に取り込まれました。 -
新規に作成したpluginです。
現状の仕様としてはvim-quickrunをトリガーにvim-qfstatuslineがステタースバー側で用意している関数を実行し、
ステータスバー側から再度vim-qfstatuslineの関数を実効し文字列を取得する形にしました。
これはsyntasticとlightline.vimの連携方法を意識して、vim-qfstatuslineを組み込んでもlightline.vimに影響しないよう考慮したためです。
vimrc設定 vimrc setting
感想 Impressions
Syntaxエラーを見やすくする事はこの2つのpluginで実現できました。
まだ、ドキュメントと動作に納得いっていない部分があるため、これから徐々に作成したいと思います。
(2014/06/15:追記)
ドキュメントも作成したので多くの人に利用して頂ける事を切に願います。