vim의 디스크에서 버퍼의 모든 파일 새로 고침


124

디스크의 버전에서 파일을 새로 고치는 명령은 다음과 같습니다. :e!

버퍼의 모든 파일에 대해 어떻게 똑같이 할 수 있습니까?

배경 : 버퍼를 포함하는 하나의 vim이 열려있는 여러 분기에서 git을 사용하고 있기 때문에 필요합니다. 브랜치를 체크 아웃 할 때 vim을 새로 고침하고 싶습니다.

답변:


87

에 대한 설명서를 읽으면 bufdo원하는 작업을 수행 할 수 있습니다.


33
좋아요 좋아요, : bufdo e! 그렇게 할 것입니다. 그러나 매번 프롬프트로드 (Y / N)가 있습니다. 어떻게 제거 할 수 있습니까?
odwl

21
명령을 사용 set noconfirm하기 전에 사용하십시오 bufdo( set confirm나중에 reanable).
pmf

22
bufdo e호기심-않은 구문을 강조 모든 버퍼를 잎
스티븐 루

4
@StevenLu 아래 PaulFenney의 답변을 확인하십시오.
DBedrenko 2014

12
사람들이 투표하는 이유는 무엇입니까? 그것은 대답 일뿐만 아니라 그것이 당신을 인도하는 방향에 따라 재로드 후 구문 강조가 비활성화된다는 것을 의미합니다.
Dmitry Minkovsky 2015

120

:checkt[ime]명령은 바로 이러한 목적을 위해 설계되었습니다.

변경된 버퍼를 다시로드하라는 메시지가 표시됩니다. 프롬프트를 건너 뛰려면 :set autoread미리 수행 할 수 있습니다 (저장되지 않은 로컬 변경 사항이있는 버퍼에 대한 프롬프트는 계속 표시됩니다).

또한 Steven Lu가 수락 된 답변에 대해 언급 한 구문 강조 문제를 방지합니다. :bufdo의도적으로 구문 강조 표시를 해제합니다 .

http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html을 통해 찾을 수 있습니다.


19

내 .vimrc에 넣은 결과는 다음과 같습니다.

fun! PullAndRefresh()
  set noconfirm
  !git pull
  bufdo e!
  set confirm
endfun

nmap <leader>gr call PullAndRefresh()

7

에서 :help autoread:

파일이 Vim 외부에서 변경된 것으로 감지되고 Vim 내부에서 변경되지 않은 경우 자동으로 다시 읽습니다. 파일이 삭제되면 이것은 수행되지 않습니다.

나처럼 항상 수동적으로 부실하지만 수정되지 않은 버퍼 다시로드하려면 작업을 완료해야하는 것 같습니다.

그러나 마지막 세부 사항은 vim이 오래된 버퍼를 알아 차릴 입니다. 그것은 checktime. 포커스 이벤트가 설정되어 있으면 포커스를checktime 받을 때마다 다음 과 같이 실행할 수 있습니다 .

set autoread
autocmd FocusGained * checktime

이 답변 에는 흥미로운 세부 사항도 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.