답변:
이것이 나를 위해 일한 것입니다
set autoread
au CursorHold * checktime
첫 번째 줄만으로는 충분하지 않았습니다. 당신은 당신을 넣을 수 있습니다.vimrc
:help timestamp
"는 내가 실수 한 사람임을 나타내며 Vim은 특정 이벤트에 대해서만 검사를 수행합니다. 따라서 autocmd가 더 자주 점검되도록해야 할 수도 있습니다.
자동 읽기가 제대로 작동하지 않습니다. 다음은 나를 위해 작동합니다.
먼저 여기 에서 스크립트를 설치해야합니다 .
설정 기능을 직접 호출하여 최상의 결과를 얻었습니다.
let autoreadargs={'autoread':1}
execute WatchForChanges("*",autoreadargs)
그 이유는 ipython / screen / vim 설정을 실행하고 싶어하기 때문입니다.
이를 향상된 버전의보기로 쉽게 변환 할 수 있습니다.
mkdir -p ~/bin
cat <<`OUT` > ~/bin/vimviewer
#!/usr/bin/env sh
exec vim -n --cmd "source /home/bryan/.vim/.vimrc.watchforchanges | let autoreadargs={'autoread':1} | execute WatchForChanges('*',autoreadargs)" $@
`OUT`
chmod 755 ~/bin/vimviewer
vimview test.txt
vim-autoread 플러그인은 지금까지 나를 위해 일했습니다.
vim-autoread
vim이 디스크에 기록되었지만 vim에서 마지막으로 쓴 이후 버퍼에서 수정되지 않은 파일을 자동으로 다시로드합니다. 이를 통해 vim에서 열린 파일을 다른 응용 프로그램을 사용하여 편집하고 저장할 수 있습니다. vim으로 돌아 오면 마지막 변경 이후 파일을 수정하지 않은 한 : e를 수동으로 누른 것처럼 디스크의 변경 사항을 반영하도록 파일이 자동으로 업데이트됩니다.
j
효과적인 업데이트를 보려면 탐색 명령 (예 :)을 입력해야합니다 . 나는이 여기에 대해 문제를 만들어 : github.com/djoshea/vim-autoread/issues/3
이 답변에서 ( PhanHaiQuang 의 답변 과 @flukus 의 의견 참조)
필요할 때 ex (whithin vim) 에서이 oneliner를 실행할 수 있습니다 (또는 로그 파일을 열 때 vimrc에 각 명령을 넣습니다).
:set autoread | au CursorHold * checktime | call feedkeys("lh")
설명 :
- autoread은 : 더 내부 타이머 또는 그런 일이없는, 외부에서 변경된 파일을 읽고 (하지만 자신의 작업을 나던 그것은 단지 정력이 예에서 명령과 같은 작업을 수행하는 파일을 읽습니다. :!
- CURSORHOLD * checktime : 커서가 checktime가 실행된다 (4000 기본적으로 밀리 초입니다) 'updatetime'파일 외부에서 변경 검사에 지정된 시간 동안 사용자에 의해 이동되지 않을 때
- 통화 feedkeys ( "LH") : 커서가 좌우로 한 번 움직 인 후 아무 일도 일어나지 않습니다 (... CursorHold가 트리거되어 루프 가 있음을 의미 합니다 )
lh
커서가 줄의 마지막 위치에 있으면 아무 것도 수행하지 않고 위치 lh
가 변경됩니다.
Vim 버전에 따라 작동 할 수 있는 플러그인이 여기 에 있습니다.
또 다른 방법은 checktime
외부 프로세스에서 정기적으로 vim에 명령을 보내는 것입니다. 이 작업을 수행하는 ShellJS 스크립트가 있습니다 ( shelljs-plugin-sleep
, NeoVim 및 nvr
).
while (true) {
sleep(15);
var servernames = exec('nvr --serverlist').trim().split('\n');
if (!servernames.length || !servernames[0]) {
continue;
}
servernames.forEach(
(sn) => exec(`nvr -c "checktime" --servername ${sn}`) );
}