При работе с Go мне бы хотелось иметь возможность открывать соответствующий тестовый файл для каждого файла .go, с которым я работаю, и наоборот. Следующим форматом является foo.go
соответствует foo_test.go
. Я могу предположить, что если он существует, он всегда будет в одной папке. Мне все равно, если он открывается в буфере, вкладке или даже в текущем буфере, я просто хочу нажать кнопку и иметь возможность переключаться между ними. Как мне это сделать?
3 ответа
Есть несколько плагинов, которые могут переключаться между файлами 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> ...
Затем либо prepend :autocmd Filetype go
, и поместите это в ваш ~/.vimrc
, или, поскольку это становится громоздким, когда вы добавляете сопоставления и другие настройки для различных типов файлов, поместите команды в ~/.vim/ftplugin/go_mappings.vim
. (Это требует, чтобы у вас был :filetype plugin on
.)
Чтобы найти решение этой проблемы, рассмотрите возможность использования моего форка файлов среды выполнения Go: https://github.com/AndrewRadev/vim-golang.
Он определяет :A
Семейство команд (соответствующие определения здесь, изменение имени файла здесь).
По сути, это ответ Инго Карката, заключенный в плагин, так что читайте дальше :help filename-modifiers
и следуйте его советам, безусловно, хороший путь.
Я могу порекомендовать плагин vim-twitch для решения этой проблемы.