vimでコマンドの結果として提供されたファイルを開きます。

vimでコマンドの結果として提供されたファイルを開きます。

私はほぼ毎日次のようなことをしています。

  1. 実行を探す(find -name somefile.txt
  2. 結果を開くvim

find問題は、結果をコピーしてコマンドに貼り付ける必要があることですvim。このようなことを避ける方法はありますか?私はいくつかの(find -name somefile.txt | vim)を試しましたが、うまくいくものが見つかりませんでした。

事前にありがとう

答え1

コマンド置換を使用できます。

vim $(find -name somefile.txt)

または

find -name somefile.txt -exec vim {} \;

答え2

この試み:

  1. vim 開始
  2. vim では、次のコマンドを使用します。

:r!find /<path> -name 'expression'

検索が完了すると、結果がvimに表示されます。

または

努力する:

find /<path> -name > results.txt
vim results.txt 

答え3

コマンドを再実行しても問題ない場合は、コマンドを押して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出力を変数に保存します$K

function K {
    K=("${(@f)$(tee /dev/fd/3)}") 3>&1;
}
find … |K
vim $K

シェルのみを使用して各コマンドの出力を自動的に保存することはできないため、エミュレートされた端末でコマンドを実行する必要があります。内部で実行すると、これを行うことができます。script(BSDユーティリティですが、LinuxやSolarisを含むほとんどのuniceで利用可能です)ファイルを介してセッションのすべての出力を保存します(typescriptで最後のプロンプトを確実に検出するにはまだ少しの労力が必要です)。

答え4

以下を使うのでここで要点を逃しているようです。

:find **/somefile.txt

(そのうちの1つだけを持っている場合 :echo &path )またはすべてを希望する場合:

:args **/somefile.txt

編集者:来て!わかったので、私もしたポイントはありません。実際のファイルを開かずにルックアップリストをしたいですか? (Vimで再び):

!!find . -name somefile.txt

- 私のせい:)

関連情報