出力を一時ファイルに送信してから、VIMを使用して一時ファイルを開き、結果を確認したい場合があります。私は一般的にうまく機能する次のアプローチを考えました。
function viewlog()
{
local d="/tmp/viewlog"
#local cmd="adb logcat"
local cmd="tail --follow=name /var/log/syslog"
#local cmd="tail --follow=name /var/log/syslog | grep myProcess"
local stopmsg="TERMINATED"
# setup temp file
mkdir $d
local fn=$(mktemp -p $d --suffix=".log")
# start redirecting cmd to the tmp file in a subshell
( ( eval $cmd >> $fn && echo -n "$stopmsg") & ) 2> /dev/null
local pid=$!
# open the temp file in vim
vim $fn +
# kill the cmd when I exit vim
kill $pid
wait $pid
}
出力はcmd
一時ファイルに保存され、vimで開きます。また、非常に簡単にリロードできるように、.vimrcには次のものが含まれています。
map <F5> <ESC>:e!<CR>G
これにより、新しいデータが追加されたときに一時ファイルを簡単に「更新」できます。
tail
これは、またはなどの単純な「ジェネレータ」コマンドがある場合に便利ですadb logcat
。ただし、上記でコメントされたgrepパイプなどのより複雑なコマンドを使用したい場合は機能しません。一時ファイルには何も表示されません。
シェル機能にはどのような問題がありますか?
答え1
これはautoread
:
:help autoread
When a file has been detected to have been changed outside of Vim and
it has not been changed inside of Vim, automatically read it again.
When the file has been deleted this is not done.
しかし、私はこれが私に満足していなかったことを認めなければなりません。vim
集中するのか、しないのかによって、効果があるかもしれないしないかもしれません。タイリングウィンドウマネージャを使用すると、この機能は完全には機能しません。しかし、一度試してみてください。おそらくそれはあなたに役立ちます。そうでなければ、市場にはよりスマートな選択肢があります。