출력을 임시 파일로 보낸 다음 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
집중하느냐 안하느냐에 따라 효과가 있을 수도 있고 없을 수도 있습니다. 타일링 창 관리자를 사용할 때 이 기능은 완전히 작동하지 않습니다. 하지만 한번 시도해 보세요. 아마도 그것이 당신에게 도움이 될 것입니다. 그렇지 않으면 시장에 더 똑똑한 대안이 있습니다.