lessをカラーリング

これは素晴らしい!
いつもdiffをlessしたときにカラーリングしてくれないのが不便だった。が、これで解決。
「less カラー」で探すと出てくる。


方法は、lessの代わりにvimを使う。
実はvimにはページャとして使うための設定が用意されている。
/usr/share/vim/macros/あたりに、less.shというスクリプトがある。

diff hoge hoge2 | /usr/share/vim/macros/less.sh

これでカラーリングされたページャが楽しめる。


その上で

alias less="/usr/share/vim/macros/less.sh"

とやっておけば完璧なんだけど、どうもless.vimだとlessと操作方法が違って、面食らってしまう。
特に矢印キーを押したときは、カーソルが動くのではなくて、そのままスクロールして欲しい。



そこで、ちょっといじる。

まずless.shと、そのvimマクロをmy scriptパスにコピー

cp /usr/share/vim/macros/less.sh ~/self/local/bin/
cp /usr/share/vim/macros/less.vim ~/self/local/share/

で、less.vimに以下を追記

map k
map
map u
map d


less.shを以下のように修正
if test $# = 0; then
vim --cmd 'let no_plugin_maps = 1' -c "source $HOME/self/local/share/less.vim" -
else
vim --cmd 'let no_plugin_maps = 1' -c "source $HOME/self/local/share/less.vim" "$@"
fi




vimには知らない機能が大量にありそうな。
どうもTextMateがなじめなくて結局vimを使っているんだけど、vimを拡張してTextMate並に使えるようにすれば良いんじゃないか?という気分。


vimに比べてTextMateの良いところは以下:
1. Tab補完の拡張性がすっさまじく高い
2. テキトーなところでEscキーを押すと、それまでに入力した語を検索して補完してくれる。


逆に気に入らない点は以下:
sshで使えない
Linuxで使えない
・スマートインデントがあんまりスマートじゃない
・/で検索できない
・Oで「前に改行」ができない
・ggで…

最後の方は結局vimを使わせろという話なんですが。


で、要するにTab補完が凄まじいのは良いのだけど、エディタ部分がGUIなのがダメ。


…そこで当然考えられるのが、vimTextMate並のTab補完を付ければ良い!という発想。

ちなみに「Escを押したら過去の履歴から補完」ってのは、vim 7にもあるらしい。
…これあるとすごく便利なんですが、方法が良く分からないので教えてください。



TextMateのTab補完は、使ってみた感じ↓こんな感じになってる

・「バンドル」は、「対象文字列」と「補完方法スクリプト」の組

・Tabが押されたときに、カーソルの直前にある語を、対象文字列から検索

環境変数をいろいろセットして、ヒットしたバンドルの補完方法スクリプトを実行(←ここポイント)
環境変数はTM_SELECTED_TEXTとかとか)

スクリプトの標準出力を受け取る

・受け取った出力の中に、"$0"、"$1"…が入っていたら、それをいろいろ処理
bash的に処理されるっぽい。${0:method_name}はmethod_nameに置き換わる)

・受け取った標準出力をエディタに書き出す

・さらにTabを押すと、"$0"が入っていた位置→"$1"が入っていた位置→…とカーソルが移動していく

・"$x"(xは数字)が2カ所以上にあるときは、$xの位置の文字を書き換えると、すべての$xが自動的に書き換わる



補完方法スクリプトは、とにかく実行してしまうので、標準出力さえできるスクリプト言語であれば何でも使える。ココ素晴らしい。

その代わり結構処理が重いのだけど、人間相手だから多少のラグは気づかれない&富豪的プログラミングてな感じでさほど問題無い。




で、vimでTabキーを全部フックして、ここのところをやたら拡張するって出来ないかな?
TabじゃなくてもControl+Iとかでも良いし(このあたりのキーを変えるのはvimにはお手の物か)