ちょうどいい記事がありました。
もとは reddit の投稿からのようです。上記事では、入出力をそのまま vim に流すことでインタラクティブな編集操作をするといったハックになっています。
今回はそれを少しいじってよりフレキシブルにしてみました。
#!/bin/bashset -e
trap'rm -f $TOVIMTMP' ERR
if[ -p /dev/stdin ];thenin="$(cat <&0)"if[ -z "$in"];thenexitfiif[ -e "$in"];then
vim "$in"< /dev/tty > /dev/tty
elseTOVIMTMP=~/.tovim_tmp_"$(date +%Y-%m-%d_%H-%M-%S.txt)"echo"$in">"$TOVIMTMP"
vim "$TOVIMTMP"< /dev/tty > /dev/tty
cat "$TOVIMTMP"
rm "$TOVIMTMP"fielse
vim "$@"fi
以下の 2 点について、カスタマイズしました。
- 入力が存在するファイル名/ファイルパスである場合、そのファイルを開く(場合によっては改悪かも)
tovim
だけで実行されたときvim
の挙動
$echo ~/myfile | tovim # vim ~/myfile に同じ$ tovim # vim に同じ
zsh ユーザは次のようなグローバルエイリアスを設定すると、
$alias -g V="| tovim"$ curl -L raw.github.com/b4b4r07/dotfiles/master/bin/tovim V # curl -L URL >file; vim file$ V # vim
こんなことができるようになります。
シェルスクリプトの習得は面倒と言われがちです。こんな具合に、既存の小さなスクリプトなどからはじめてみると、やりやすいように思います。