Vimのファイル保存の機能としてコマンドモードでwを実行するとファイル保存が出来る。 普段は:wしか使ってこなかったのだが、 これを利用して任意のコマンドを叩く事が出来ると教えてもらった。

console.log(123);
console.log(234);
:w !node
123
234

:1w !node
123

:2w !node
234

:1,2w !node
123
234

:1
V
:'<,'>w !node
123

Bash で活用してみる

:w !bashと叩けばVimで編集中のコマンドをそのままターミナルで走らせる事も可能。 例えばprojectsフォルダ配下にずらーっとプロジェクトが並んでて、全てに対してgit pullを打ち込んで更新したいなんて時に便利。 (他にも解決方法はあると思うけど手段の一つとしてあり。)

AltJS で活用してみる

これは AltJS でも非常に有効。 特に LiveScript は非常に優秀な AltJS だがドマイナーな言語で、 quickrun.vim 等の便利なTOOLも対応していないものが多くありがたい。

global <<< require \prelude-ls
[1 to 10]
|> map (* 2)
|> console~log # console.logはバインドする必要がある
:w !lsc
[ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ]

:w !lsc -bcp
// Generated by LiveScript 1.5.0
var this$ = this;
import$(global, require('prelude-ls'));
bind$(console, 'log')(
map((function(it){
  return it * 2;
}))(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]));
function import$(obj, src){
  var own = {}.hasOwnProperty;
  for (var key in src) if (own.call(src, key)) obj[key] = src[key];
  return obj;
}
function bind$(obj, key, target){
  return function(){ return (target || obj)[key].apply(obj, arguments) };
}

REPL さえ用意されていれば全て使える? 最近 Gauche を始めてみたが、そちらでも使えて満足。