TL;DR
シェルでfind、grep等をパイプしてxargsで受け取ってvimで開くには、find . -type f -name hoge | xargs sh -c 'vim $* < /dev/tty'
とすれば良い。
これを毎回書くのは面倒なので、alias xargsvim='xargs sh -c '\''vim $* < /dev/tty'\'''
とエイリアスを作っておくとfind . -type f -name hoge | xargsvim
と書けて便利。
背景
上記以外に言うべきことはほとんど無いのですが、背景を少し。
同じことを実現するために、素直にfind . -type f -name hoge | xargs vim
とすると、「Vim: Warning: Input is not from a terminal」という警告が出る上に、以降、ターミナルへの入力がおかしくなります。
仕方ないのでvim `find . -type f -name hoge`
とやっていたのですが、この方法だと途中でパスの補完が効かなかったり不便です。
そんな折に、こちらの記事を見つけました。
ファイル名をパイプで出力してvimで開く方法
(xargs vim
でターミナルがおかしくなる理由も書いてありますので、興味のある人はぜひ読んでみてください)
find . -type f -name hoge | xargs -o vim
と、-o
オプションを付けるだけでOKとのこと。
「おー、こういうのが欲しかったんだよ」思ったのですが、これはBSD系固有のオプションのようです。
https://linuxjm.osdn.jp/html/GNU_findutils/man1/xargs.1.html
という訳で、素直に環境に依存しない形式で、-o
オプション相当のことを実現するエイリアスを作ればいい、という結論になりました。