物置き

utl.vim 試してみた

前のエントリのコメントでutl.vimというのが存在することを教えていただいたので試してみました。せっかく試したのでできることをおおざっぱに大紹介します。
ちなみに使ったバージョンは3.0aです。

どんなもんか

という形式で書かれたテキストの上にカーソルがある状態で、:Utlコマンドを実行すると、中の文字列に応じてアクションを実行できます。
また、http://..などの一部の記述ではというように括弧で括られていなくても実行できます。

できること

http://...という形式からブラウザを起動

url:http://...という表記の上で、:Utlコマンドを実行すると
その環境の「通常使うブラウザ」でURLを開くことができます。
また、単純にhttp://...という表記からブラウザを起動することもできます。

また、下記のような形でUtlコマンドのパラメータにURLを与えることもできます。

:Utl openlink http://...
file://....という形式のファイルをVim内で開く

file://...と表記することでローカルファイルやネットワークコンピュータ上のファイルも開けます。

<url:file:///autoexec.bat>

file://...から始まるURLの場合は、Vim内で開こうとするようです。(拡張子による?)

相対パス表記のローカルファイルをVim内で開く
../path/to/file.txt

というように書かれているパスをそのまま開くこともできます。
..から始まる相対パス表記の場合、カレントバッファの作業ディレクトリを基準とした相対パスとして展開されます。

でも、「c:\autoexec.bat」のような絶対パス表記の場合は
開くことができないようです。
絶対パスの時はfile://..表記使え、ということですかね。

(というかそもそもローカルファイルへのパスだったらgfでいいんじゃないか、と思った..)

脚注へのジャンプ

[10]という表記があった場合、現在位置より後方にある[10] ... ではじまる行にジャンプします。

 天下一品のスープのどろどろ感の正体は鶏がら [1]
 
 ...(中略)
 
 [1] http://tenkaippinsaigen.seesaa.net/article/94132589.html

なお、ジャンプ先が後方にない場合でも、ちゃんと循環してファイル先頭からサーチしてくれるみたいです。

また、という記述でもいけます。

ファイル内アンカーみたいな表記からのジャンプ

とか書いとくと、その行の3行後にジャンプすることができます。
もちろんと書いた場合は、3行前にジャンプします。


また、と書くと、現在位置の後方にある次の「tenkaippinsaigen」にジャンプします。
で前方のキーワード検索も行えます。

Vimのヘルプを引く

という形式からVimのヘルプを引くこともできます。

またとかくことで、#より後ろのキーワードを指定することもできます。
このように書くと、Vimヘルプのtempname()の項目を開いた後、後方にある最初の「exe」のある位置にジャンプします。

拡張子に関連づけられたプログラムで開く

リンク先のファイルが.pdfファイルや.pptだった場合、拡張子に関連づけられたアプリケーションでファイルを開くようです。(未確認)

Vim内で開くのと、関連づけされた別アプリケーションで開くところの切り分けはどうなってんだろ。(<-ちゃんとヘルプ読んでない)

VimScriptを直接実行

という記述から:lsコマンドを実行することができます。

メーラーを起動
<url:mail:///Inbox?date=12.04.2008 15:04>

こんな感じで書いとくと、メーラーを起動できるみたいなのですが、
g:utl_cfg_hdl_scm_mailという変数にメーラーを起動するためのコマンドラインを指定する必要があるみたいで、何も設定していない自分の環境では起動することができませんでした。

メールアドレスからメーラーを起動
<url:mailto:...>

という形式から、メーラーのメール入力画面を開くことができます。
ここで起動されるメーラーは、Windowsの場合は「インターネットオプション」で設定するmailto:に関連づけられたメーラーになるようです。

manを引く
<url:man:ls>

からmanでlsコマンドを引くことができます。
とはいえ、手元の環境はWindowsでしかもCygwinとかいれてないので、
どういう挙動になるのかわかりません。

マッピング

ヘルプドキュメントみると、guがどうとか書いてあるけど(よく読んでない)、
3.0aのソースコード見る限りでは、特に何もmapしていないように見える。

ということで、Enterキーに何もマッピングしていないのなら

nnoremap <silent> <cr> :silent exe 'Utl'<cr><cr>

とかやっとくと、Enterキーを押したときにカーソル位置に何かあったら何かするし、
何もなければ今まで通りの挙動をするということで、さりげなさ抜群でいいんじゃないでしょうか。