Vimでファイル保存時にFirefoxをリロードする(with MozLab)
2008年07月13日
以前作った vim script
この記事(http://la.ma.la/blog/diary_200609280045.htm)を参考に、MozLab(http://dev.hyperstruct.net/trac/mozlab)のMozReplを使って、Vimでファイル(*.html,*.htm,*.js,*.css)保存時にFirefoxをリロードするVimスクリプトを作ってみた。
を修正して、 vim が ruby, python, perl のいずれかが使えるようにコンパイルされていれば動作するようにしました。
どれも使えない場合は個別のスクリプトファイル(*.rb, *.py, *.pl)を使って動作させます。どれを使うかは reloadfirefox.vim を修正して選べます。(デフォルトは *.rb )
reloadfirefox.vim
if exists('g:reload_firefox')
finish
endif
command -nargs=0 Setreloadfirefox :call SetMozreplReloadFirefox()
function! ReloadFirefox()
if has('ruby')
:ruby <<EOF
require "net/telnet"
telnet = Net::Telnet.new({
"Host" => "localhost",
"Port" => 4242
})
telnet.puts("content.location.reload(true)\n")
telnet.puts("repl.quit()\n")
telnet.close
EOF
elseif has('python')
:python <<EOF
import telnetlib
HOST = "localhost"
PORT = 4242
telnet = telnetlib.Telnet(HOST, PORT)
telnet.read_until("repl>")
telnet.write("content.location.reload(true)\n")
telnet.write("repl.quit()\n")
telnet.close()
EOF
elseif has('perl')
:perl <<EOF
use strict;
use warnings;
use Net::Telnet;
my $host = 'localhost';
my $port = 4242;
my $prompt = '/[repl>]/';
my $telnet = new Net::Telnet(
Host => $host,
Port => $port,
Timeout => 10,
Prompt => $prompt,
);
$telnet->open($host);
$telnet->cmd("content.location.reload(true)\n");
$telnet->cmd("repl.quit()\n");
$telnet->close;
EOF
else
if has('gui_win32')
" for Windows
let ruby_script_file = 'd:/cygwin/home/tom/bin/mozrepl_reload_firefox.rb'
else
" for Mac, Linux, Cygwin
let ruby_script_file = $HOME . '/bin/mozrepl_reload_firefox.rb'
endif
if filereadable(ruby_script_file)
call system(ruby_script_file)
else
echo "ERROR : File \"" . ruby_script_file . "\" is NOT found."
endif
endif
endfunction
function! SetMozreplReloadFirefox()
if exists('g:reload_firefox')
autocmd! mozreplreloadfirefox
unlet g:reload_firefox
echo "\"mozreplreloadfirefox\" of augroup has been deleted."
else
augroup mozreplreloadfirefox
autocmd BufWritePost *.html,*.htm,*.php,*.js,*.css call ReloadFirefox()
augroup END
let g:reload_firefox=1
echo "Firefox browser content is reloaded when file(*.html,*htm,*.php,*.js,*.css) is saved."
endif
endfunction
mozrepl_reload_firefox.rb
require "net/telnet"
telnet = Net::Telnet.new({
"Host" => "localhost",
"Port" => 4242
})
telnet.puts("content.location.reload(true)\n")
telnet.puts("repl.quit()\n")
telnet.close
mozrepl_reload_firefox.py
import telnetlib
HOST = "localhost"
PORT = 4242
telnet = telnetlib.Telnet(HOST, PORT)
telnet.read_until("repl>")
telnet.write("content.location.reload(true)\n")
telnet.write("repl.quit()\n")
print telnet.read_all()
telnet.close()
mozrepl_reload_firefox.pl
use strict;
use warnings;
use Net::Telnet;
my $host = 'localhost';
my $port = 4242;
my $prompt = '/[repl>]/';
my $telnet = new Net::Telnet(
Host => $host,
Port => $port,
Timeout => 10,
Prompt => $prompt,
);
$telnet->open($host);
$telnet->cmd("content.location.reload(true)\n");
$telnet->cmd("repl.quit()\n");
$telnet->close;
ファイルにまとめたものがこちら "Vimでファイル保存時にFirefoxをリロードする(with MozLab) " からダウンロードできます。