読者です 読者をやめる 読者になる 読者になる

黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

w3m.vimをちょっと便利にしたくて初めてVim script書いた

最近本屋さんでVim scriptテクニックバイブルを見つけました。
最初見つけた時は!!!???ってなりましたが、めっちゃおもしろそうだったので購入。
変態言語なんて言われているVim scriptがなんたるものかを懇切丁寧に解説してくださっている良本です。
言語全くわかんない私でも頑張って読めますので皆さん買いましょう。Vim使いましょう。

Vim plugin書こうぜ!公開しようぜ!って章*1を読んでて、.vimrcほぼコピペな悲しい私もなんか書いてみたいなーと思ったので今回のエントリ。
pluginにできそうなアイデアは今のところ(おそらくこれからも…)ないので、いつも便利に使わせてもらっている既存のpluginをちょっと便利にしてみようと.vimrcに関数書きました。

 

vimからw3mコマンドを実行する素晴らしいpluginの存在

yuratomo/w3m.vimというプラグインがあります。
これはvimの中でw3mコマンドを実行できて、結果をバッファに表示してwebブラウジングできちゃうプラグインです。

vimでなにやら作業をしていると、テキスト内にURLが書かれている場合があります。
いつもv押してコピーしてからchrome開いてペーストして…ってやっているのですが、折角だからvim内で作業を完結させたいなぁと思ってました。
で、w3m.vimに標準でそういう機能あるのかな?と思って調べようとしたところで冒頭に戻ります。

ようは、URLにカーソルもっていって、文字列取得して、:W3mに引数として渡せばいいだけでしょ?と書き始めて早2時間、やっと動くものができたのが以下。

は、ハイライトできん…

getline('.')でカーソル行をごっそり取ってきて、正規表現でURL引きずり出しています。
ただ、URLの後ろにひっついている文字なんかがどうしてもくっついてきてしまったので、URLの後ろには必ずスペースあるだろ!という謎の決め打ちから、matchlistを使ってサブマッチ部分をlistに格納して:W3mに渡しています。

どうにか新しいウインドウで実行させたかったのですがどうにもうまく行かなかったので、:vsで同バッファのウインドウができるところで妥協しています。どうすればいいのか…

凄いやっつけでぼろぼろな感じですが、すげー!動いたー!って素直に嬉しい不思議。
しっかり動作確認していないので実はあかんかも。もうちょっと調べてみよう。

・追記1
ちゃんと動かないですね、ええ。すいません。

・追記2 末尾のスペースを前提にしているせいで凄まじく使えない感じになっていたので、削除。

ただ、こうなるとURLの後ろに何かしら文字が入っていると使えないな…

*1:そんなタイトルの章は実際ありません。