インターネットでなにかをみていると、これは!と思うことがあります。ふとみれば vim が立ち上がっている。今開いているファイルにこのURL をメモしておきたいと思ったらどうしたらいいんだろ...
昔(OS 9 の頃か?)今みているブラウザのURL とタイトルをクリップボードにコピーするAppleScript をどなたかが公開していた思うのですが、それに近いことを vim 内でできないかな?って試みです。
vim から osascript を呼び出せると最近知りましたので使ってみました。
# home に戻ります。
$ cd
# テキストファイルを作ります。
$ vim 01.txt
# .applescript でも .txt でもどっちでもいいみたい。
$ 01.txt
tell application "Safari"
tell current tab of window 1
set str to "--
" & name & "
" & URL
end tell
return str
end tell
# コンパイルしてみます。# この時 Safari が起動します。(起動していなかった場合)
$ osacompile -o ~/01.scpt 01.txt
$ vim memo.txt
# vim で memo などしています。と思いきやインターネットもみているとします。
# !!と思ったら
:r !osascript ~/01.scpt
--
Apple - Support - Discussions - Forum Home
http://discussions.apple.com/index.jspa
# ↑こんな感じに title とulr が書き込まれます。
# でも
# Safari の window を開いない時に誤って :r! osascript ... したとすると
... Can’t make name of «class cTab» of window 1 of application "Safari" ....
# ↑このようになっちゃいます。これを修正しつつあらたまった風情にしてみます。
$ cat 02.applescript
script get_title_url
to main()
set n to ASCII character (10)
tell application "Safari"
try
tell current tab of window 1
set str to "--" & n & name & n & URL & n & "<a href='" & URL & "'>" & name & "</a>"
if URL is "" then return
return str
end tell
end try
end tell
end main
end script
on run
tell get_title_url
return main()
end tell
end run
$ osacompile -o ~/safari.scpt 02.applescript
# test
:r !osascript ~/safari.scpt
--
Mac OS X clipboard sharing - Vim Tips Wiki
http://vim.wikia.com/wiki/VimTip687
<a href='http://vim.wikia.com/wiki/VimTip687'>Mac OS X clipboard sharing - Vim Tips Wiki</a>
# うまくいきました。
# -- INSERT -- で \safari と打つとタイトルとURL とリンク形式文字列が埋め込まれるようにしてみる?
# inoremap <Leader>safari <ESC>:<C-u>read !osascript ~/safari.scpt<CR>kkkddjjA
osascript から受け取る文字列の行頭には \n が混入されている為(\n--\n になる)受け取った後にvim側で kkkdd とかしてます。osascript 側からこれを制御できればいいけどどうしてもわりませんでした。
+++
もっと他の方法(or 適切なのはこうだよ or coolなのあるよ or ふつうこうだよ or plug-in あるよ)などをご存知の方は教えてくださいませ。どのようなコメントも大歓迎です。
[2010-07-08]
fileencodings=utf-8 以外を設定しているとおかしなことになるかもしれません。 アマゾンの本のトップページをsafariで開き、上記の safari.scpt をvim 経由で動かすと下記のようになります。 こうならない場合は :set fileencodings? あたりをみてみてください。
# アマゾンの本トップページ
--
Amazon.co.jp: 本 (和書)
http://www.amazon.co.jp/%E6%9C%AC-%E5%92%8C%E6%9B%B8/b/ref=sa_menu_jb0/377-9481435-0601213?ie=UTF8&node=465392
109
<a href='http://www.amazon.co.jp/%E6%9C%AC-%E5%92%8C%E6%9B%B8/b/ref=sa_menu_jb0/377-9481435-0601213?ie=UTF8&node=465392'>Amazon.co.jp : 本 (和書)</a>
# 日本語の本を一冊選んだ場合
--
Amazon.co.jp: 床下の小人たち (岩波少年文庫): メアリー ノートン, ダイアナ・スタンレー, Mary Norton, 林 容吉: 本
http://www.amazon.co.jp/%E5%BA%8A%E4%B8%8B%E3%81%AE%E5%B0%8F%E4%BA%BA%E3%81%9F%E3%81%A1-%E5%B2%A9%E6%B3%A2%E5%B0%91%E5%B9%B4%E6%96%87%E5%BA%AB-%E3%83%A1%E3%82%A2%E3%83%AA%E3%83%BC-%E3%83%8E%E3%83%BC%E3%83%88%E3%83%B3/dp/4001140624/ref=pd_ts_zgc_b_526266_1/377-9481435-0601213?_encoding=UTF8&s=books&pf_rd_m=AN1VRQENFRJN5&pf_rd_s=right-4&pf_rd_r=0EK1B90C9XBKZFDFK6AT&pf_rd_t=1401&pf_rd_p=95969149&pf_rd_i=3077031496
<a href='http://www.amazon.co.jp/%E5%BA%8A%E4%B8%8B%E3%81%AE%E5%B0%8F%E4%BA%BA%E3%81%9F%E3%81%A1-%E5%B2%A9%E6%B3%A2%E5%B0%91%E5%B9%B4%E6%96%87%E5%BA%AB-%E3%83%A1%E3%82%A2%E3%83%AA%E3%83%BC-%E3%83%8E%E3%83%BC%E3%83%88%E3%83%B3/dp/4001140624/ref=pd_ts_zgc_b_526266_1/377-9481435-0601213?_encoding=UTF8&s=books&pf_rd_m=AN1VRQENFRJN5&pf_rd_s=right-4&pf_rd_r=0EK1B90C9XBKZFDFK6AT&pf_rd_t=1401&pf_rd_p=95969149&pf_rd_i=3077031496'>Amazon.co.jp: 床下の小人たち (岩波少年文庫): メアリー ノートン, ダイアナ・スタンレー, Mary Norton, 林 容吉: 本</a>
0 件のコメント:
コメントを投稿