2011-04-24 3 views
7

answer of this question:bd에 따르면 Vim (GVim)이 마지막 버퍼 일 때 종료하지 않아야합니다. 불행히도 내 경우에는 GVim을 닫습니다. 나는 bd에 대해 잘못된 것을 이해 했는가?빔이 버퍼 삭제 후 종료 됨 (bd)

또한 미리 구성된 vimrc 파일을 사용하고 있습니다. 어쩌면 거기에있는 설정이 그 부작용을 가지고 있을지 모르지만 나는 그것을 발견 할 수 없었다.

+0

.vimrc를 시도했지만 동일한 문제가 없습니다. 그것을 일으키는 원인이되어야합니다. – nocash

+0

내 vimrc를 사용해 주셔서 감사합니다. ZyX가 언급했듯이 일부 플러그인에는 문제가있는 것으로 보입니다. 나는 그의 추천 명령의 출력을 그의 대답 아래 게시했다. – Zardoz

+1

나는이 문제를 일으키는 플러그인이 정말로 궁금합니다. 실제로이 기능을 사용하고 싶습니다. –

답변

15

하고 다음을 시도해보십시오 :

:set eventignore=all | bd | set eventignore= 

이는 정력을 종료하지 않을 경우 당신이 그 일을 시도 후, 그래서 더 이상 버퍼가 목록에 존재하지 않는 정력을 종료 자동 명령을 정의하는 몇 가지 플러그인

verbose autocmd BufWinLeave,BufLeave,BufDelete,BufUnload,BufWipeout 

이것은 지정된 이벤트 (버퍼가 삭제 될 때 실행되는 이벤트)에 첨부 된 모든 자동 명령과 정의 된 위치를 보여줍니다. standart vim 배포판의 플러그인에 의해 정의 된 이러한 이벤트에 첨부 된 자동 명령은 없습니다.

업데이트 : 출력에 아무 것도 표시되지 않습니다. 시도해 볼 수도 있습니다

verbose autocmd BufNew,BufAdd,BufCreate,BufEnter,BufWinEnter 

(마지막 버퍼를 비울 때 새로운 비어있는 버퍼가 만들어 지므로) 시도해보십시오. 이 의심스러운 아무것도 표시되지 않는 경우, 이벤트 유형을 무시 시작 : 당신이 리눅스에있는 경우 다음 스크립트를 시도 : 당신이 문제의 원인 이벤트 이름을 찾을 때까지

for event in BufWinLeave BufLeave BufDelete BufUnload BufWipeout BufNew BufAdd BufCreate BufEnter BufWinEnter 
do 
    event=$event vim file -c "set eventignore=$event | bd" 
done 

이 스크립트는 반복한다. 이 후 vim에서 execute "verbose autocmd" $event을 사용하여 확인할 플러그인 수를 줄일 수 있습니다. autocmd 그룹의 목록을 얻은 후에 (오그 그룹 이름은 출력에서 ​​이벤트 이름 바로 앞에 표시됩니다 : railsPluginDetect 같은 그룹 중 하나임) 이벤트를 삭제하고 (augroup {GroupName} | execute 'autocmd!' | augroup END) 클레임 할 플러그인을 찾으십시오.

또는, 디버거를 사용할 수 있습니다 : 다음 s<CR>n<CR><CR><CR>... 정력이 종료 될 때까지

debug bd 

을; 잊지 마세요 잊지 말고 vim이 위의 그림에 표시된 것을 잊지 마시기 바랍니다. > quiting before.

+0

힌트에 감사드립니다. 실제로 플러그인이이를 수행하는 것 같습니다. 내가 권장하는대로 자세한 명령을 실행하고 결과를 얻었습니다. https://gist.github.com/939432 플러그인 중 어떤 것이 그 원인인지와 다시 덮어 쓰는 방법에 대한 아이디어가 있습니까? – Zardoz

+0

@Zardoz 업데이트를 참조하십시오. – ZyX

+0

문제가 무엇인지 확실하지 않지만 더 이상 발생하지 않습니다. 다시 올 경우 플러그인에서 발생시킨 설명을 남깁니다. 도와 주셔서 감사합니다. – Zardoz

관련 문제