A Better Project@はてなダイアリー(インポート版)

基本的にここは更新されません。詳細はaboutへ。

DekiWiki で外部リンクをテキストで設定する

恐らく私のように毎週一度ひたすら外部リンクを DekiWiki のページで設定しまくる人はまれだとは思うのですが(DekiWiki の普及度ではなく使い方の問題)、覚え書きとして。
通常、DekiWiki での外部リンクの設定はページ編集時のリッチテキストエディタのリンクダイアログを使って行うわけですが、キーボードだけでやるとしても、テキストを選択後、ctrl + k でリンクダイアログを呼び出し、外部リンクでは使うことのない内部リンクの検索が終わるのを待った後、選択テキストを ctrl + a で選択して、ctrl + v でクリップボードにある外部リンクの URL を貼り付ける、という手順を踏みます。数個の外部リンクならまだ我慢できるかもしれませんが、10 個以上の外部リンクの設定を何週間も続けていくとさすがにどうにかならないものかと思ってきます。またテキストの使い回しがしにくい(ソースレベルでやるとかその都度コピーしてくるとかできますが)という問題もあります。
内部リンクなら MediaWiki の二重角括弧で囲う形式が使えるのですが(ただし言語ディレクトリも必要)、外部リンクではその形式は使えません。テンプレートでどうにかできないかと調べたところ、DekiScript の web.Link 関数を使えば、テキストで外部リンクを設定できることがわかりました。以下のように使います。

{{web.Link("http://example.com","Example")}}

これを直接手で打つのはちょっと面倒なので、エディタの機能を使って楽をします。Vim の場合、surround.vim を導入して、以下の設定をします(設定方法の日本語解説記事)。

let g:surround_{char2nr('a')} = "{{web.Link(\"\1url\1\",\"\r\")}}"

こう設定すると、テキストを選択して、sa と入力すると、URL 入力
を促すダイアログが出ます。ctrl + r の後に * を押すとクリップボードの中身を挿入できるので、そうした後にエンターすれば O.K です。
ちなみに、surround.vim を導入後、元々の v_s(ビジュアルモードの s)を使いたい場合は、同じ効果を持つ v_c を使うか、surround.vim の v_s を別のキーバインドに設定します。以下は、surround.txt にある例。

vmap <Leader>s <Plug>Vsurround