
Ao trabalhar com Go, gostaria de poder abrir o arquivo de teste correspondente para cada arquivo .go com o qual estou trabalhando e vice-versa. O formato seguido foo.go
corresponde a foo_test.go
. Posso assumir que se existir estará sempre na mesma pasta. Não me importa se ele abre em um buffer, aba ou até mesmo no buffer atual, só quero apertar um botão e poder alternar entre os dois. Como eu faço isso?
Responder1
Existem alguns plugins que podem alternar entre C/C++ .c
e .h
arquivos; alguns podem ser configuráveis para lidar com seu caso de uso. No entanto, tal mapeamento (ou comando) pode ser facilmente definido, por exemplo, para <Leader>a
:
:nnoremap <expr> <Leader>a ':edit ' . (expand('%:t:r') =~? '_test$' ? expand('%:s?_test??') : expand('%:r') . '_test.' . expand('%:e')) . '<CR>'
Isso é usado :help filename-modifiers
para extrair, comparar e montar um :edit
comando.
O acima é globalmente para uso em ~/.vimrc
; se você quiser isso apenas para arquivos Go, use :nnoremap <buffer> <expr> ...
Then prefixe :autocmd Filetype go
e coloque isso em seu ~/.vimrc
, ou, como isso fica complicado à medida que você adiciona mapeamentos e outras configurações para vários tipos de arquivos, coloque os comandos em ~/.vim/ftplugin/go_mappings.vim
. (Isso requer que você tenha :filetype plugin on
.)
Responder2
Para uma solução imediata para o problema, considere usar meu fork dos arquivos de tempo de execução Go:https://github.com/AndrewRadev/vim-golang.
Ele define a :A
família de comandos (as definições relevantes sãoaqui, a modificação do nome do arquivo éaqui).
É basicamente a resposta de Ingo Karkat, empacotada em um plugin, então ler :help filename-modifiers
e seguir seus conselhos é definitivamente um bom caminho a percorrer.
Responder3
Eu posso recomendar o pluginvim-twitchabordar esta questão.