2013-03-26 3 views
1

netrw을 사용하여 vim에서 원격 파일에 액세스 할 때 :autoread과 같은 항목이 있습니까?실수로 덮어 쓰지 않도록 vim autoread + netrw

netrw를 통해 내 작업 컴퓨터의 파일에 원격으로 액세스합니다. 그런 다음 직장에 도착하면 파일을 수정합니다. 그러나 원격 액세스로 되돌아 가면 파일이 이미 버퍼에 열려있는 경우 파일을 다시로드하는 것을 잊어 버리기 쉽습니다. 작업 컴퓨터에서 수정 된 경우 다음 :w은 내가 변경 한 내용을 덮어 씁니다. 직장에서. 나는 데이터 손실의 위험을 줄이기 위해 '안전망'을 찾고있다. (다행히도, .swp 파일 때문에 어떤 것도 잃어 버리지는 않았지만 매우 안심할 수있다.)

+1

적절한 VCS를 사용하면 찾고있는 안전망을 제공 할 수 있습니다. 또는 Vim을 원격 컴퓨터에서 직접 사용하기. – romainl

+0

vim을 통해 Vim을 직접 사용하는 것이 좋습니다. vim을 직접 사용하는 것은 적어도 나를위한 실질적인 옵션이 아닙니다. gvim을 사용하지 못하게하고 편집 프로세스에 지연을 추가하기 때문입니다. – keflavich

+0

GVim은 CLI Vim보다 좋지 않습니다. 예, Git repo에 물건을 넣고, 집에있는 컴퓨터에서 복제하고, 작업하고, 커밋하고, 푸시 한 다음 다시 돌아올 때 당깁니다. – romainl

답변

1

'autoread'으로 Vim은 파일 수정 시간을 확인하기 만하면됩니다. netrw 대상이 다른 시스템에 있기 때문에 해당 조회는 비용이 많이 들고 사용자가 직접 트리거해야합니다. 한 가지 아이디어는 FocusGained 이벤트에서 검사를 수행하는 것입니다. 즉, (집에있는) Vim으로 돌아올 때입니다. Windows GVIM에서 netrw 액세스가 콘솔 창을 팝업 (다른 FocusGained 트리거)하고 너무 자주 검사하지 않도록하기 위해 검사를 특정 시간 간격으로 제한합시다. 최대 5 분마다 :

:autocmd FocusGained ftp://*,scp://* nested 
\ if ! &modified && ! exists('b:lastchecktime') || localtime() - b:lastchecktime > 300 | 
\  edit! | 
\  let b:lastchecktime = localtime() | 
\ endif 
+0

그건 영리한 해결책인데, 나는 그것을 좋아한다. 그러나 편집에 비해'편집 '을 선호한다고 생각합니다. 로컬 편집을 지우는 대신 로컬 편집과 원격 편집을 모두 수행하면 경고 메시지가 표시됩니다. – keflavich

+1

unpersisted 로컬 변경 사항을 덮어 쓰지 않습니다. 그것이'! 수정 됨'에 대한 것입니다. ': edit'을 사용하면,이 경우 경고 메시지를 받게됩니다. 내 솔루션은 조용합니다. –

1

:checktime을 사용해 보셨습니까?

관련 문제