모든 버퍼를 한 번에 다시로드하려면 어떻게해야합니까?


20

의 기능 분기에서 작업 할 때 git기본 분기에 버그 수정을 적용하기 위해 변경 사항을 숨겨야하는 경우가 종종 있습니다. 변경 작업을 완료 git stash pop하면 파일의 타임 스탬프가 업데이트됩니다.

파일이 동일하더라도 다음에 저장하려고하면 다음과 같은 결과가 나타납니다.

경고 : 파일을 읽은 후 파일이 변경되었습니다 !!!

정말로 쓰고 싶습니까 (y / n)?

디스크에서 파일이 변경 될 때마다 파일을 자동으로 다시로드하고 싶지 않습니다 git stash pop.

지금은 각 버퍼를 개별적으로 수동으로 다시로드합니다 ( :e). 하나의 명령 으로이 작업을 수행 할 수있는 방법이 있습니까?

답변:


26

:help bufdo당신이하고 싶은 일을 참조하십시오 . 버퍼 목록의 각 버퍼에서 명령을 실행합니다. 예를 들면 다음과 같습니다.

:bufdo e

명령을 실행 :help noconfirm하기 전에 확인 대화 상자를 사용하지 않도록 설정할 수도 있습니다.bufdo

:set noconfirm

그리고 bufdo명령 후에 다시 활성화하십시오 .

:set confirm

1
강제로 다음을 시도하십시오 :bufdo! e..
kenorb

화면에 메시지를 인쇄하지 않고 : 자동! bufdo e
베르너

12

:checktime명령 으로이 작업을 수행 할 수 있습니다 . 로부터 문서 :

:checkt[ime]        Check if any buffers were changed outside of Vim.
                    This checks and warns you if you would end up with two
                    versions of a file.

이 명령은 파일에 타임 스탬프가 변경된 각 버퍼에 대해 수행 할 작업을 묻습니다. 변경되지 않은 파일에 대해이 기능을 비활성화하려면 :set autoreadvim 이 파일을 다시로드하도록 할 수 있습니다. vim 버퍼와 디스크의 파일 사이의 내용이 변경되었는지 묻습니다.

사용하기 쉽도록 다음과 같은 맵을 설정할 수 있습니다.

nnoremap <F5> :checktime<CR>

다음은 실제로 해답이 아닌 보너스 정보입니다. OpenSUSE에서 gvim (vim의 GTK GUI)은 초점을 맞출 때 자동으로이를 수행합니다. 나는 왜 그것을하는지 모르고 다른 시스템을 확인하지는 않았지만 추가 기능으로 유용하다고 생각했습니다. 아마 someelse는 확인할 수 있습니까?
tokoyami

정말 도움이됩니다! 내가 한 것은 탭 전환 바로 가기의 일부로이 명령을 통합하는 것이 었습니다. 즉nnoremap tl :tabnext<CR>:checktime<CR>
cr8ivecodesmith

1
@tokoyami, 님이 갖고있는 기능은의 이벤트 gvim와 관련이있을 수 있습니다 . unix.stackexchange.com/a/383044/99801에서 관련 정보를 찾을 수 있습니다 . FocusGainedvim
Victor Yarema
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.