Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

xargsで受け取った複数のファイル名をvimで開く(BSD系以外の場合)

$
0
0

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オプション相当のことを実現するエイリアスを作ればいい、という結論になりました。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>