回答:
コマンド置換を使用できます。
vim $(find -name somefile.txt)
または
find -name somefile.txt -exec vim {} \;
vim `find -name somefile.txt`
。また@StuartPowers、あなたが使用することができvim `!-1`
ますが、すでにこの検索を使用する場合は、前のコマンドだった
もう一度コマンドを実行してもかまわない場合は、コマンドを押しUpて追加しますxargs
。または、履歴置換を使用して実行
!! | xargs vim # won't work with file names containing \'" or whitespace
!! | xargs -d \\n vim # GNU only (Linux, Cygwin)
kshとzshで機能するがbashでは機能しないコマンドの出力を保存する軽量な方法があります(パイプラインの出力側を親シェルで実行する必要があります)。管機能へのコマンドK
(以下zshの定義)、kは可変でその出力をEEPS $K
。
function K {
K=("${(@f)$(tee /dev/fd/3)}") 3>&1;
}
find … |K
vim $K
各コマンドの出力を自動的に保存することは、シェルだけでは実際には不可能です。エミュレートされたターミナルでコマンドを実行する必要があります。内部で実行することでそれを行うことができますscript
(BSDユーティリティですが、LinuxおよびSolarisを含むほとんどの大学で使用可能)、ファイルを介してセッションのすべての出力を保存します)。
バックティックを使用したい `(〜と同じキーにあります)
> vim `find . -name somefile.txt`
バックティックはティック内でコマンドを実行し、出力はコマンドで使用できます。上記はすべてのファイルsomefile.txtを見つけるため、すべてのファイル:next
を移動するために使用できます。
履歴置換を使用してエディターのコマンドを繰り返すことができるため、コマンドをさらに数回試行する場合に非常に便利です。
> find . -name somefile.txt
./debug/somefile.txt
./somefile.txt
> vi `!!`
関数を書きました pvim
あなたが望むことを。複数の行がパイプされるpvim
と、最初の行以外はすべて無視されますが、vimで複数のファイルを開くように拡張できます。
stu@sente ~ $ function pvim() { read -r somefile; exec < /dev/fd/1; vim "$somefile"; }
stu@sente ~ $ type pvim
pvim is a function
pvim ()
{
read -r somefile;
exec < /dev/fd/1;
vi "$somefile"
}
次のように使用します。
stu@sente ~ $ find . -name "foo.txt" | pvim
入力したかのように、最初の「foo.txt」をvimにロードします。
vim $(find . -name "foo.txt | head -n1")