回答:
-
コマンドラインでファイル名の代わりに使用する必要があります。
echo This is example. | vim -
上記のコマンドは、標準入力から読み取られたテキストで満たされた名前のないバッファを開きます。
-
for stdinの使用は、コマンドラインツールのほぼ標準です。
これは主にbash
とについてのおもしろいメモreadline
ですが、EDITOR
環境変数をに設定するとvim
、Ctrl+ x+ eを押すとの現在の行が開きvim
ます。さらに、Meta(Alt/Opt/Esc)+ Ctrl+と入力するとe、bashは現在のコマンドラインでインプレース展開を実行します。
$ echo $EDITOR # Assuming EDITOR was set
Meta(Alt/Opt/Esc)+ Ctrl+ eになります
$ echo vim # Assuming EDITOR was set
Ctrl+ x+ eになります
1 echo vim # Assuming EDITOR was set
~
~
/tmp/sometmpbufferfile
vimを終了すると、vimバッファーの内容がコマンドラインで実行されることに注意してください。
これらの機能は、forループやhereステートメントを必要とするプログラムなど、bashで複数行のコマンドを実行したい場合に非常に役立ち、コマンドライン履歴を後で使用するためにファイルに保存する興味深い方法を提供します。
元の質問に答えるために、次のように書くこともできます。
$ This is an example
そして、Ctrl+ x+ eを押してにロードしvim
ます。また、あなたが持つことができる、
$ $(cat /etc/hosts)
そして、やるMeta(Alt/Opt/Esc)+ Ctrl+ eその後、Ctrl+ x+ e1本のライン上のhostsファイルのすべてを入れて、それをアップロードしている、vim
しかし、これらの手法の有用性を検討し、いくつかの例から推定することができます-おそらく、これらの機能を最大限に活用がありません(ここに)。
あなたreadline
がemacs
モードに設定されていると仮定していることに注意してください。readline
がvim
モードに設定されている場合、次のコマンドを使用して、関連するバインディングを簡単に検出できます。
bind -p
そして探しedit-and-execute-command
またはshell-expand-line
、それぞれバインディングに関連付けされたCtrl+ x+ eとMeta(Alt/Opt/Esc)+ Ctrl+ e。
set -o vi
してオンにします。次にv
、通常モードでマッピングを使用して、エディターで現在のコマンドを編集できます。
shell-expand-line
削除改行展開されたテキストおよび2からedit-and-execute-command
試しバッファに書き込まれたコマンドを実行するには、 、viを終了するときに、保存されているかどうかに関係なく。
bashでは、<(command)
構文を使用してプロセス置換を使用すると便利です。例:
vim <(echo This is example.)
vim <(cat /etc/hosts)
こちらもご覧ください:
bash
し、zsh
(とないsh
、ksh
、dash
、fish
、csh
、tcsh
、など)
/proc/PID/fd/FD
。バッファを書き込んで終了しても、Vimは文句を言いませんが、書き込み先のファイルはOSによって削除されます。-
ファイル名として開いたバッファを使用すると、関連付けられたファイルがないため、(bangコマンドなどを使用しない限り)Vimを保存せずに終了しようとすると警告が表示されます。
vimdiff <(echo foo) <(echo bar)
。
:next
と:prev
、ストリームを使用して再読み込みしたように見え、何も取得されません。また、プロセスは互いに平行ではないことを言及する価値があります-例えばcat <(sleep 3; echo a) <(echo b)
、順番に印刷します-そして、cat
書き込みと読み取りをインターリーブしている間vim
、外側のフレームを除くすべてを表示する前にファイルを「読み取り終了」します。
新しいVimへのパイプラインを使用する必要がない場合は、Vimの機能を使用して、コマンドの出力を現在のバッファーに取り込むことができます。また、非ファイルバックアップバッファーを使用する(:new
存在しないファイルを編集するなど)
:read!cat /etc/hosts
コマンドモードでは、現在のカーソル位置の下の現在のバッファに出力が配置されます。
これが空のバッファーで行われたときに残っている空の最初の行を削除する必要があることとは別に、これはうまく機能し、Vimが既に実行されている場合に特に便利です。
:help stdin
...組み込みのドキュメントについて質問することで、どれだけ速く答えを見つけることができるかは驚くべきことです。