Я разрабатываю на Windows, используя виртуальную машину Linux через Vagrant и Virtual Box. Я пытаюсь выяснить, как получить расширение Code Runner для запуска моих файлов на виртуальной машине. Самым большим препятствием на данный момент является то, что для данного файла мне нужно преобразовать путь хоста Windows в гостевой путь Linux.
Справочная информация:
Расширение Code Runner позволяет сопоставлять типы файлов командам оболочки для запуска этих файлов. Например,
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt"
сообщает Code Runner, что когда я пытаюсь запустить файл Java, он должен cd
перейти в каталог, в котором находится файл, и скомпилировать файл, а затем запустить скомпилированный файл. Отображение типов файлов в команды называется code-runner.executorMap
, которое содержится в settings.json
. Добавив опцию
"code-runner.runInTerminal": true
на мой settings.json
, я могу сказать Code Runner, чтобы он работал во встроенном терминале. Поэтому, просто подключив SSH к моей виртуальной машине через встроенный терминал через vagrant ssh
, я получаю программу запуска кода, предназначенную для виртуальной машины.
Вот в чем проблема: Code Runner использует мои пути в стиле Windows и мои файловые структуры Windows в качестве аргументов командной строки для моей виртуальной машины.
Например, предположим, что моя файловая структура Windows выглядит как c:\a\b\c\d
, а моя виртуальная машина имеет корень в c
, поэтому c
и d
являются общими папками. Если я хочу запустить файл в d
, команда cd $dir
скажет моей виртуальной машине сделать cd c:\a\b\c\d
.
Я думал об обходных путях, таких как добавление следующего в мои настройки для запуска файлов python
"python": "cd \"$(dirname \"$(locate -l1 $fileName)\")\"; python3 $fileName",
Эта команда, которая выполняется на встроенном терминале (ВМ), находит и переходит в каталог, содержащий файл, который должен быть запущен. Затем он говорит интерпретатору python3 запустить этот файл. Однако это не всегда работает (например, несколько файлов с одним и тем же именем) и требует от меня обновления базы данных, от которой зависит locate
каждый раз, когда я добавляю файл.
Должен быть какой-то способ перевести мои пути к файлам Windows в пути на виртуальной машине (например, c:\a\b\c\d
-> /c/d
). Возможно через Vagrant? Буду признателен за любую помощь.