
При работе с 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
семейство команд (соответствующие определения см.здесь, изменение имени файлаздесь).
По сути, это ответ Инго Карката, оформленный в виде плагина, так что чтение :help filename-modifiers
и следование его советам — определенно хороший способ.
решение3
Я могу порекомендовать плагинvim-дергатьсядля решения этой проблемы.