https://superuser.com/a/669463/199803에 여기에 설명 된 자동 명령이 있습니다 .vimrc
.
편집 : 편의를 위해 질문 본문에 복사했습니다.
function CountListedBuffers()
let cnt = 0
for nr in range(1,bufnr("$"))
if buflisted(nr) && ! empty(bufname(nr))
let cnt += 1
endif
endfor
return cnt
endfunction
function QuitIfLastBuffer()
if CountListedBuffers() == 1
:q
endif
endfunction
autocmd BufDelete * :call QuitIfLastBuffer()
그러나 기괴하게도 정확히 하나의 나열된 버퍼가 있고 :help
명령 을 사용하려고 하면 도움말 창이 열리지 않습니다 (또는 아마도 열리고 즉시 닫힙니다). my에서 자동 명령 줄을 주석 처리하면 .vimrc
이 동작이 더 이상 발생하지 않습니다.
왜 이런 일이 발생하며 어떻게 해결할 수 있습니까? 왜 사건을 :h
유발 BufDelete
할까요?
편집 : 상세 수준을 12로 설정하면 BufDelete 이벤트가 실제로 발생한다는 것을 알 수 있습니다. 나와 관련이있는 출력 부분은 다음과 같습니다.
Executing BufAdd Auto commands for "*"
autocommand call <SID>BMAdd()
calling function <SNR>6_BMAdd
calling function <SNR>6_BMAdd..<SNR>6_BMFilename
calling function <SNR>6_BMAdd..<SNR>6_BMFilename..<SNR>6_BMMunge
calling function <SNR>6_BMAdd..<SNR>6_BMFilename..<SNR>6_BMMunge..<SNR>6_BMTruncName
function <SNR>6_BMAdd..<SNR>6_BMFilename..<SNR>6_BMMunge..<SNR>6_BMTruncName returning '/usr/local/share/vim/vim74/doc'
continuing in function <SNR>6_BMAdd..<SNR>6_BMFilename..<SNR>6_BMMunge
function <SNR>6_BMAdd..<SNR>6_BMFilename..<SNR>6_BMMunge returning 'help\.txt\ (4)\^I/usr/local/share/vim/vim74/doc'
continuing in function <SNR>6_BMAdd..<SNR>6_BMFilename
calling function <SNR>6_BMAdd..<SNR>6_BMFilename..<SNR>6_BMHash
function <SNR>6_BMAdd..<SNR>6_BMFilename..<SNR>6_BMHash returning #340582286
continuing in function <SNR>6_BMAdd..<SNR>6_BMFilename
function <SNR>6_BMAdd..<SNR>6_BMFilename returning #0
continuing in function <SNR>6_BMAdd
function <SNR>6_BMAdd returning #0
continuing in BufAdd Auto commands for "*"
Executing BufDelete Auto commands for "*"
autocommand :call QuitIfLastBuffer()
'verbose'레벨을 12로 설정하고 도움말 창을 열어보십시오. 또한 QuitIfLastBuffer 함수에 무엇이 있는지 알고 있으면 도움이 될 수 있습니다.
—
Heptite
@Heptite, 문제의 기능은 내가 포함 한 링크에 완전히 복사되었습니다.
—
Kyle Strand
질문 본문에 넣으십시오.
—
romainl