根據目前檔名在 vim 中開啟另一個文件

根據目前檔名在 vim 中開啟另一個文件

使用 Go 時,我希望能夠為我正在使用的每個 .go 文件開啟相應的測試文件,反之亦然。遵循的格式foo.go對應於foo_test.go.我可以假設,如果它存在,它將始終位於同一個資料夾中。我不在乎它是否在緩衝區、選項卡甚至當前緩衝區中打開,我只想按一個按鈕並能夠在兩者之間切換。我該怎麼做呢?

答案1

有一些插件可以在C/C++.c.h檔案之間切換;有些可能可以如此配置來處理您的用例。然而,這樣的映射(或命令)可以很容易地定義,例如<Leader>a

:nnoremap <expr> <Leader>a ':edit ' . (expand('%:t:r') =~? '_test$' ? expand('%:s?_test??') : expand('%:r') . '_test.' . expand('%:e')) . '<CR>'

這用於:help filename-modifiers提取、比較和彙編命令:edit

以上內容在全球範圍內使用~/.vimrc;如果您只希望對 Go 檔案使用此選項,請使用:nnoremap <buffer> <expr> ... Then 或 prepend :autocmd Filetype go,並將其放入您~/.vimrc~/.vim/ftplugin/go_mappings.vim. (這要求你有:filetype plugin on。)

答案2

對於問題的直接解決方案,請考慮使用我的 Go 運行時檔案分支:https://github.com/AndrewRadev/vim-golang

它定義了:A指令系列(相關定義是這裡,檔名修改為這裡)。

這基本上是 Ingo Karkat 的答案,打包在一個插件中,所以閱讀:help filename-modifiers並遵循他的建議絕對是一個好方法。

答案3

我可以推薦這個插件vim 抽搐來解決這個問題。

相關內容