Немного о projectionist

Для переключения между модулем и тестом к нему в vim удобно использовать projectionist. Всё бы хорошо, но в случае, если модули лежат в файлах с именами, например, common/cli/foo.py, а тесты, соответственно, tests/common/cli/test_foo.py, не сразу сообразишь, как для этого случая лучше настроить соответствия.

Почитав документацию и найдя в ней разъяснения про *, его соответствие ** и *, и макросы dirname и basename, я пришёл примерно к вот такому рецепту:

{
"*.py": {
"alternate": "tests/{dirname}/test_{basename}.py"
},
"tests/**/test_*.py": {
"alternate": "{dirname}/{basename}.py"
}
}

«Все танцуют».

P.S. Можно сделать ещё проще:

{
"*.py": {
"alternate": "tests/{dirname}/test_{basename}.py"
},
"tests/**/test_*.py": {
"alternate": "{}.py"
}
}