Abra outro arquivo no vim com base no nome do arquivo atual

Abra outro arquivo no vim com base no nome do arquivo atual

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.gocorresponde 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++ .ce .harquivos; 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-modifierspara extrair, comparar e montar um :editcomando.

O acima é globalmente para uso em ~/.vimrc; se você quiser isso apenas para arquivos Go, use :nnoremap <buffer> <expr> ... Then prefixe :autocmd Filetype goe 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 :Afamí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-modifierse seguir seus conselhos é definitivamente um bom caminho a percorrer.

Responder3

Eu posso recomendar o pluginvim-twitchabordar esta questão.

informação relacionada