出力をコマンドラインエディタにパイプして次のコマンドを実行する

出力をコマンドラインエディタにパイプして次のコマンドを実行する

使ってきた

sudo find / -iname '*foo*' 2>/dev/null | vim

含まれているディレクトリ/ファイルのリストをインポートし、fooこのリストを確認して編集し、vimにいくつかの新しいコマンドを作成します。

vimにコマンドを作成したら、作成した内容をコピーしてvimを終了し、新しいコマンドラインに貼り付けます。

Vimは私のCx Ceコマンドラインエディタです。

:wqこのvimセッション内でコマンドラインをバッファで自動的に入力することはできますか?

vimを起動する代わりにCx Ceを使用するからですvim

パイプ入力を使用してCx Ce vimセッションを開始するには?

ベストアンサー1

vipe(from)は次のように使用できますmoreutils

sudo find / -iname '*foo*' 2>/dev/null | vipe | "$SHELL"

ここでvipeパイプ入力を編集し、必要なシェルに提供できます。

または:

sudo find / -iname '*foo*' 2>/dev/null | vipe | xclip -sel c

編集したパイプラインをCLIPBOARD X11選択に保存します。

vipeに保存されているエディタを実行する$VISUALか、設定されていない$EDITOR場合、$VISUALまたはviその両方を実行します。

その編集内容をシェル履歴に直接プッシュするには、zsh次のようにします。

print -rs -- "$(sudo find / -iname '*foo*' 2>/dev/null | vipe)"

(そしてキーを使って呼び出されますUp)。

シェルの編集バッファに直接置くにはzshまだ。print -rsprint -rz

またはない場合vipe

(){vim $1 && print -rz -- "$(<$1)"} =(sudo find / -iname '*foo*' 2> /dev/null)

たとえば、次のような関数を作成できます。

vif sudovif() {
  () {
    vim $1 &&
      print -rz -- "$(<$1)"
  } =(${0%vif} find "$@")
}
vif / -iname '*foo*'

おすすめ記事