パイプからvimを開く
.pmなファイルをまとめて開きてーよー。と良く思うんだけど、みんなどうやってるんだろう?調べ方が悪かったのか、いい方法がなかなか見つからなかったぞ。
失敗その2
ls *.pm | vim -
これはlsの出力内容そのものを編集できるだけ。
失敗その3
ls *.pm | xargs vim
一応全部開ける。やったー、と思ったけどwarningがでて、ターミナルの挙動がおかしくなる(Ctrl-Dとか効かん)ので駄目。
どうも3あたりにナイスなソリューションのヒントが隠されてるのではないかと考えて”vim xatrgs”とかでググッたら、割と残念な情報を発見。
> find . -name "*.c" -print | xargs vim
問題はxargsが起動するプログラムのために標準入力のプロパティを設定しないことで、これがVimにとって問題を引き起こす。Vimが標準入力からの入力を期待するコマンドだからである。タイプした文字がechoされて
http://www.kaoriya.net/vimdoc_j/starting.txtを押すまで効力を発揮しないという症状がでる。
あーそうですか。意味わからんけど。
しかし、ちっこいツールをコンパイルして使えばいけるよって書いてあったので、それを試す。
#include <unistd.h> #include <stdio.h> main(argc, argv) int argc; char **argv; { close(0); /* close stdin */ dup(2); /* duplicate stdin from stderr */ execvp(argv[1], argv + 1); perror("could not execute program"); }
意味は知らん。
これをstartって名前でぺぺっとコンパイルして、実行権つけて、/usr/local/bin あたりに放り込む。そして、
ls *pm | xargs start vim
おーいけたいけた。
当然こんなのもOK。
find ./lib -name "*.pm" | xargs start vim
シェルのrcで適当なalias設定しとくと楽。
alias vim-="xargs start vim"
いまいちすっきりしないけど、この辺で妥協してやろう。他にいい方法知ってる人がいたら教えてください。
コメントで教えていただいた方法。これはなぜか思いつかなかった!
vim `find ./lib -name ’*.pm’`