如果你傳遞文件的Vim,將在argc
反映(也當您纏繞Vim的調用)。相反,角落案例使用編輯命令啓動Vim,例如, vim -c "edit foo"
。如果您需要檢測的是,你需要檢查兩件事情:
- 當前緩衝區是默認的空白緩衝
- 沒有其他文本緩衝區已經載入
這裏的一組功能實施:
function! IsBlank(bufnr)
return (empty(bufname(a:bufnr)) &&
\ getbufvar(a:bufnr, '&modified') == 0 &&
\ empty(getbufvar(a:bufnr, '&buftype'))
\)
endfunction
function! ExistOtherBuffers(targetBufNr)
return ! empty(filter(range(1, bufnr('$')), 'buflisted(v:val) && v:val != a:targetBufNr'))
endfunction
function! IsEmptyVim()
let l:currentBufNr = bufnr('')
return IsBlank(l:currentBufNr) && ! ExistOtherBuffers(l:currentBufNr)
endfunction
我沒有看到您描述的行爲。在簡單的測試中,我做了'argc()'包含正確的數字。 – FDinoff