a.vim и мой alternate-lite fork поддерживают опцию searchpath , где вы можете указать, как мы можем (быстро) переключаться между каталогами.
Они более приспособлены для перехода между файлом заголовка и файлом определения, но должна быть также возможность добавить тестовые файлы - я не знаю, как это будет вести себя с .c.c
VS .c
на самом деле.
Учитывая шаблон, который вы нам дали, ванильный (не масштабируемый) подход будет выглядеть примерно так (не проверено):
function! s:alt_name(name) abort
if a:name =~ '\.c\.c$'
return substitute(a:name, '\v<test>/(.*)\.c', 'src/\1', '')
elseif a:name =~ '\.c$'
return substitute(a:name, '\v<src>/(.*\.c)', 'test/\1.c', '')
else
return a:name
endif
endfunction
command! -nargs=0 Switch :exe ':e '.s:alt_name(expand('%'))
Конечно, если вам нужно перейти к окну, где буфер уже открыт, или разделен, или ... хорошо. Вот почему есть плагины.