Korzystanie z dwóch ścieżek Pythona dla vima w systemie Windows

0

Chciałem po prostu :!python %uruchomić plik im za pomocą vim, ale oczywistym konfliktem jest to, że nie ma sposobu, abym mógł rozróżnić python2 i python3, ponieważ uwzględnienie obu spowoduje, $PATH$że wystąpią dwa przypadki python.exe.

Czy istnieje na to eleganckie rozwiązanie? Chcę tylko szybko uruchomić to, nad czym pracuję.

2c2c
źródło

Odpowiedzi:

2

Możesz zdefiniować dwa niestandardowe polecenia, np .:

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

Alternatywnie, jeśli wersja Pythona różni się w zależności od projektu, użyłbym jednej z lokalnych wtyczek vimrc, aby ustawić zmienną lokalną bufora (powiedzmy b:python_version) i sprawdzić to w poleceniu niestandardowym:

:command! Python execute '!C:\python' . b:python_version . '\python %'
Ingo Karkat
źródło
0

Nie ma oczywistego konfliktu, ponieważ nie ma znaczenia, ile python.exemasz w swoim PATH, tylko pierwszy zostałby stracony . Te PATHprace od lewej do prawej - po znalezieniu pliku wykonywalnego, proces jest wywoływany i zaprzestaje wyszukiwania.

Więc jeśli tak było C:\python27\wcześniej C:\python3\, zawsze wykonujesz python2.

Wikipedia
Po wprowadzeniu polecenia w powłoce poleceń lub wywołaniu systemowym przez program w celu wykonania programu, system najpierw przeszukuje bieżący katalog roboczy, a następnie przeszukuje ścieżkę, badając każdy katalog od lewej do prawej, szukając pliku wykonywalnego nazwa pliku zgodna z podaną nazwą polecenia. Programy wykonywalne mają rozszerzenia plików EXE lub COM, a skrypty wsadowe mają rozszerzenia BAT lub CMD. W systemie można również zarejestrować inne rozszerzenia plików wykonywalnych.

Po znalezieniu pasującego pliku wykonywalnego system odradza nowy proces do uruchomienia.

Jako rozwiązanie tego, zgodziłbym się z rozwiązaniem @IngoKarkat - jednak włożyłbym to w swoje ~/.vimrc.

nerdwaller
źródło
Jest już :python3wbudowane polecenie (po kompilacji z obsługą Python 3); w każdym razie niestandardowe polecenia muszą zaczynać się od dużej litery.
Ingo Karkat,