Я хотел просто :!python % , чтобы запустить файл, который я использую в vim, но очевидный конфликт заключается в том, что я не могу различить python2 и python3, поскольку включение обоих в $PATH$ приведет к двум экземплярам python.exe .

Есть ли элегантное решение для этого? Я просто хочу быстрый способ запустить то, над чем я работаю.

2 ответа2

2

Вы можете определить две пользовательские команды, например:

:command! Python2 !C:\python2\python %
:command! Python3 !C:\python3\python %

Кроме того, в случае, если версия Python отличается для каждого проекта, я бы использовал один из локальных плагинов vimrc, чтобы установить локальную переменную буфера (скажем, b:python_version), и проверил это в пользовательской команде:

:command! Python execute '!C:\python' . b:python_version . '\python %'
0

Нет очевидного конфликта, так как не имеет значения, сколько python.exe вас есть в вашем PATH , будет выполняться только первый. PATH работает слева направо - как только исполняемый файл найден, процесс вызывается и поиск прекращается.

Так что если у вас есть C:\python27\ before C:\python3\ , вы всегда будете выполнять python2.

Википедия
Когда команда вводится в командной оболочке или системный вызов выполняется программой для выполнения программы, система сначала ищет текущий рабочий каталог, а затем ищет путь, просматривая каждый каталог слева направо, ища исполняемое имя файла соответствует имени команды Исполняемые программы имеют расширения файлов EXE или COM, а пакетные сценарии имеют расширения BAT или CMD. Другие исполняемые расширения файлов также могут быть зарегистрированы в системе.

Как только найден соответствующий исполняемый файл, система порождает новый процесс, в котором он запускается.

В качестве решения этой проблемы я бы согласился с решением @IngoKarkat - однако вместо этого я поместил бы это в мой ~/.vimrc .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .