在VIM中使用拆分窗口時,有時會創建在另一個拆分中已打開的文件的新拆分(通常使用插件在新拆分中爲給定文件打開單元測試)。Vim拆分,除非打開
有沒有辦法如何重新分割split命令,以便它在分裂之前檢查文件是否已經打開,如果是,請關注它?
在VIM中使用拆分窗口時,有時會創建在另一個拆分中已打開的文件的新拆分(通常使用插件在新拆分中爲給定文件打開單元測試)。Vim拆分,除非打開
有沒有辦法如何重新分割split命令,以便它在分裂之前檢查文件是否已經打開,如果是,請關注它?
不能重新映射現有split
命令,據我知道,但你可以通過寫一個新功能Split
,然後使用命令模式的縮寫(cabbrev
)達到同樣的效果相同。
這裏有一個函數/映射應該做你想要的。
function! MySplit(fname)
let bufnum=bufnr(expand(a:fname))
let winnum=bufwinnr(bufnum)
if winnum != -1
" Jump to existing split
exe winnum . "wincmd w"
else
" Make new split as usual
exe "split " . a:fname
endif
endfunction
command! -nargs=1 Split :call MySplit("<args>")
cabbrev split Split
請注意,這將僅對當前選項卡中的現有拆分進行「檢查」,並且隱藏的緩衝區將被忽略。 (但是,添加更多案例以增強此功能應該不會太困難。)
另一種方法是使用:drop {file}
。
Edit the first {file} in a window.
- If the file is already open in a window change to that
window.
- If the file is not open in a window edit the file in the
current window. If the current buffer can't be abandoned,
the window is split first.
還使用:sb
切換緩衝區也可能有用。見vim: move to buffer?
欲瞭解更多信息:
:h :drop
:h :sb
:h 'swb'
那的searchInRuntime的特點之一。
:GSplit
和:GVSplit
可以重命名,它們支持文件名完成,當&path
中有幾個匹配模式時,它們會詢問打開哪個文件。
太棒了,感謝日誌 – iNecas