AppleScriptでVimの保存時のファイル更新を取得してブラウザを更新する
概要
Vimでファイルを保存した時にファイルをブラウザで開いている場合(HTMLを書いている場合など)、いちいちブラウザにフォーカスを当てて、ブラウザ再読み込みを行うのは面倒くさいので、
- ブラウザにフォーカスを当てる
command + rイベントを発行- フォーカスをターミナルに戻す
の動作を自動化する
Vimで使用するコマンドを実装する
/Users/daiki/.vim/pluginにchrome.vimを配置- ディレクトリがない場合は作成する
- 以下のコードを
chrome.vimに書き込んで保存
chrome.vim1
2
3command! -bar ChromeReload silent !osascript $HOME/bin/chrome_reload.scpt && osascript $HOME/bin/terminal_focus.scpt
command! -bar ChromeStartObserve ChromeStopObserve | autocmd BufWritePost <buffer> ChromeReload
command! -bar ChromeStopObserve autocmd! BufWritePost <buffer>
ブラウザにフォーカスを当ててリロードするコマンドを実装
/Users/daiki/binにchrome_reload.scptを配置- ディレクトリがない場合は作成する
- 以下のコードを
chrome_reload.scptに書き込んで保存カスタマイズ
- 1行目:
tell application "safari" to activateのsafariの部分を別のブラウザの名前に変更すると開くブラウザを変更できる
chrome_reload.scpt1
2tell application "safari" to activate
tell application "System Events" to keystroke "r" using {command down}
ターミナルにフォーカスを戻すコマンド
/Users/daiki/binにterminal_focus.scptを配置- ディレクトリがない場合は作成する
- 以下のコードを
terminal_focus.scptに書き込んで保存カスタマイズ
"Terminal"の部分を書き換えると別アプリにフォーカスを当てられる
terminal_focus.scpt1
tell application "Terminal" to activate
Vimで使用するには
vimを開いて、ブラウザで更新したいファイルに対して以下のコマンドを打つ
:ChromeReload:1回ブラウザをリロードする:ChromeStartObserve:Vimで保存するたびにブラウザをリロードする:ChromeStopObserve:ChromeStartObserveの保存時の自動リロードを停止する
参考
AppleScriptでVimの保存時のファイル更新を取得してブラウザを更新する
https://daiki-iijima.github.io/2021/02/21/AppleScriptでVimの保存時のファイル更新を取得してブラウザを更新する/




