使用 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> ...
然后在 前面添加:autocmd Filetype go
,并将其放入 中~/.vimrc
,或者,由于在您添加映射和其他设置(用于各种文件类型)时会变得笨重,因此将命令放入 中~/.vim/ftplugin/go_mappings.vim
。(这要求您有:filetype plugin on
。)
答案2
对于该问题的直接解决方案,请考虑使用我的 Go 运行时文件分叉:https://github.com/AndrewRadev/vim-golang。
它基本上是 Ingo Karkat 的答案,不过打包在一个插件中,因此阅读:help filename-modifiers
并遵循他的建议绝对是一个好方法。
答案3
我可以推荐这个插件vim-twitch来解决这个问题。