2008年3月3日月曜日

VimでHTMLやCSSの保存と同時に各ブラウザのリロードを実現する

最近はHTMLやCSSも書いてます。
ずっとVimを使って書いているのですが、いちいちブラウザチェックの為にリロードするのがめんどくさくてかないません。
皆さんそう思っているようで、

CSSを保存したときにブラウザを更新 mac+applescript+emacs+safari
というエントリを見つけました。
Emacsウラヤマシイ!Vimでもやりたい!

ということでvimrcとAppleScriptを連携させてやってみました。
しかも、
Mac+AppleScript+Vim+Safari+Firefox+Opera
という感じで、Safari & Firefox & Operaも同時更新させるようにしました。

まずはAppleScript。
/Applications/AppleScript/スクリプトエディタを起動し、reload_browser.scptという名前で下記のコードを保存します。

reload_browser.scpt
tell application "Safari"
do JavaScript "location.reload()" in document 1
end tell

tell application "Firefox" to activate
tell application "System Events" to keystroke "r" using {command down}

tell application "Opera" to activate
tell application "System Events" to keystroke "r" using {command down}

tell application "Vim" to activate


コードは$HOME/bin/に保存してます。
FIrefoxやOperaで直接Javascriptを実行する方法がよくわからなかったので、System Eventでキー押させてます。
リロードが終わったらVim(僕はGVim使ってるので)にactivateしてフォーカスを戻す。
後はこれをvimから叩くだけ。

:!osascript /Users/cohtan/bin/reload_browser.scpt


ぶっちゃけ、これでは使い勝手が悪いので、CTRL+Gにマッピングすることに。
Vimのどちらのモードからも使えるよう下記の設定を.vimrcに追加。

imap <C-G> <ESC>:w<CR>:!osascript /Users/cohtan/bin/reload_browser.scpt<CR><CR>a
nmap <C-G> :w<CR>:!osascript /Users/cohtan/bin/reload_browser.scpt<CR><CR>


これだけで、いつどんな時でもCTRL+Gで保存&各ブラウザリロードが実現!
快適っすよー!

1 件のコメント:

なかにしゆうすけ さんのコメント...

素敵なAppleScriptありがとうございます。
AppleScriptと関係ない質問で申し訳ないのですが、Firefoxがリロードされた時“ファイルが見つかりません”とエラー表示されるのですがこれはどのように解決したらいいのでしょうか。。

久しぶりにブログを書く

最初ログインできなくて焦った。 いや、ログインはできたのだが、ログイン後に自分のブログの管理画面に遷移できず、新しいブログを作成する画面になってしまったからビビッてしまった。 どうやら、Google+(現在はサービス終了)に紐づいたプロフィールを設定しているとこのような状況に陥る...