October 10, 2006
久々に、実はあんまり使いこなしていない vim ネタ。
少し前のネタなんですが、
vimグループ - [script]shebangでファイルを実行する関数
subtechグループ - ピンク ブロッサム ダイアリー - ShebangExecute
まだ vim7 を使ってないし、正直なところ、あんまり vim7 を使うモチベーションもなく、(メリットがまだよくわかっていない。だるい。時間がもったいない) ずっと vim6 を使っていたんですが、どうしてもこの
こんなんしといて、あとは同様に
つか vim script よくわからない。
それ以上に vim で使える正規表現がよくわからない。。
少し前のネタなんですが、
vimグループ - [script]shebangでファイルを実行する関数
shebang ( ファイル先頭の #!/bin/sh とか )でカレントバッファのファイルを実行する関数。ここで紹介されている
ShebangExecute()
が、便利そうだなぁって思ってたんですが、この vim script を書いた id:secondlife が、subtechグループ - ピンク ブロッサム ダイアリー - ShebangExecute
下方互換性は考慮してないのでたぶんvim7以降じゃないと動きません。と書いていて、確かに試してみると、どうも
matchlist()
が vim7 以降のものっぽくちゃんと動かない。まだ vim7 を使ってないし、正直なところ、あんまり vim7 を使うモチベーションもなく、(メリットがまだよくわかっていない。だるい。時間がもったいない) ずっと vim6 を使っていたんですが、どうしてもこの
ShebangExecute()
を vim6 でも使いたかったので、vim6 でも動く ShebangExecute()
を書いてみました。function! ShebangExecute () let line = getline(1) let interp = substitute(line, '#!\s*\(\S\+\).*$', '\1', '') if (strlen(interp) >= 1) execute '!' . interp . ' %' else execute '!' &ft ' %' endif endfunctionまぁ、ただ
substitute()
で置換して無理矢理インタープリタのパスだけを取ってるだけです。こんなんしといて、あとは同様に
nmap ,e :call ShebangExecute()<CR>とかキーバインドしておけば、とりあえず vim6 でも同じことが出来ると思います。
つか vim script よくわからない。
それ以上に vim で使える正規表現がよくわからない。。