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

初めてvim pluginを書いた

前々から作りたいと思っていたvim pluginを、vimscriptの勉強がてら書いてみました。
以下のようなご指摘をいただけるととても嬉しいです。

  • これ、このプラグインの機能の車輪の再発明じゃない?
  • コード間違ってない?こう書いたほうがいいんじゃない?
  • etc...

ちなみにα版なので、使用にはご注意ください。
#作成途中に何度か処理が返ってこなくなりました(汗

どんなプラグインか?

一言で言うと以下のようなプラグインです。

カーソル位置と同一列の次の文字列(列方向の)まで移動するプラグイン

例をもとに説明します。

まず、以下のような文書でカーソルがnにあるとします。(ちなみに、本プラグインのソース抜粋です。)

このとき、本プラグインのcolumnjump#forwardという関数を使うと1,2,3という順に下方に向かって同一列の次の文字列(列方向の)の先頭まで移動できます。

逆方向の移動も可能です。以下のようにカーソルがdにあるとします。

本プラグインのcolumnjump#backwardという関数を使うと1,2,3という順に上方に向かって同一列の次の文字列(列方向の)の先頭まで移動できます。

簡単に説明しましたが、READMEも書いてないので、詳細が知りたい方はソースを見てください。。。

何が嬉しいのか?

構造型文書で、スペースやタブでインデントされている文書内の移動がちょっと楽になると思います。

どうやって使うのか?

vim7であれば、おそらく動くと思います。(virtualeditが使える必要があります。)

pluginはgit-hubに置いてるので、.vim配下などに配置してください。
deris/columnjump - GitHub

.vimrcに以下のような感じでキーマップを設定してやれば使える。と思います。。。
※α版なので名前が変わる可能性大です。

nnoremap <c-k> :call columnjump#backward()<CR>
nnoremap <c-j> :call columnjump#forward()<CR>

※英単語が間違っていたのでこっそり修正しました。。。

今後やりたいこと

  • 数字と合わせて指定した数文字列ジャンプする(例:2とか)
  • motionとして扱えるようにする(例:dとか)
  • normal mode以外でも操作可能にする(例:vnoremapとか)
  • 文字列の先頭だけでなく終端への移動も可能にする

これらを見ると、如何に汎用的に書けてないことがわかりますね。。。

参考にさせていただいたサイト、プラグイン

以下のサイト、プラグインを参考にさせていただきました。ありがとうございます。

Vimスクリプトリファレンス — 名無しのvim使い
カーソル位置の文字を取得 + Vim における文字列について - EAGLE 雑記
kana/vim-smartchr - GitHub

おわりに

冒頭でも書きましたが、何でもご指摘いただけるととても嬉しいです。
# コードは載せませんでしたが、コードに関するご指摘が一番嬉しいかもです。

2011/3/2追記

公開したそばからインターフェースが変わってます(汗
簡易helpを追加したので:help columnjumpで参照してください。
visual mode、operator-pending mode、回数指定にも対応しました。