vimエディタを呼び出して出力をbashにパイプする方法

vimエディタを呼び出して出力をbashにパイプする方法

場合によっては、テキストを作成し、そのテキストを別のコマンドでリンクする必要があります。私の一般的なワークフローは次のとおりです。

vim
# I edit and save my file as file.txt
cat file.txt | pandoc -o file.pdf # pandoc is an example 
rm file.txt

私はこれが面倒であることを知り、bashスクリプトを学びたいと思います。エディタを開き、エディタが閉じたときにエディタの出力を標準出力にパイプするコマンドを作成して、プロセスをより簡単にしたいと思います。その後、コマンドを実行できますquickedit | pandoc -o file.pdf

これがどのように機能するのかよくわかりません。上記の正確なワークフローに従い、いくつかの追加機能を追加してそれを自動化する関数を作成しました。ファイル名でランダムな文字列を生成し、関数を呼び出すとそれをvimに渡します。ユーザーがファイルを保存してvimを終了すると、この関数はファイルをコンソールに印刷してからファイルを削除します。

function quickedit {
    filename="$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32)"
    vim $filename
    cat $filename
    rm $filename
}
# The problem:
# => Vim: Warning: Output is not to a terminal

私がすぐに直面した問題は、vimのような作業をするときにすべてのquickedit | command出力がパイプに制限されているため、vim自体がエディタとして使用できないことです。

関数の出力をパイプするための回避策があるかどうか疑問に思いますquickedit。次善策は、サブライムテキストのような別のエディタを実行することですが、私は本当に端末に滞在したいと思います。

ベストアンサー1

vipeパイプを編集するプログラムです。

command1 | vipe | command2

完全な出力を含むエディタが提供され、終了すると、コンテンツはそのエディタにパイプされますcommand1command2

この場合、次のようにすることcommand1ができます。

: | vipe | pandoc -o foo.pdf

または:

vipe <&- | pandoc -o foo.pdf

vipeVimを開くために使用できる変数をEDITOR取得します。VISUAL

まだインストールしていない場合は、パッケージまたはあなたの好みに合ったパッケージにありますvipemoreutilssudo apt-get install moreutils

おすすめ記事