Używam Debian Jessie i używam obecnego vim-nox (z + python -python3). Trudno mi programować w języku Python 3, ponieważ mam problemy z uzupełnianiem kodu w języku Python 3.
YouCompleteMe w ogóle nie obsługuje Python3. jedi-vim obsługuje uzupełnianie języka Python 3, ale tylko jeśli miałbym opcję + python3, jeśli dobrze ją rozumiem. Z kilku postów deweloperów Debiana wydaje się, że kompilacja Vima z flagą + python3 tak naprawdę nie działa. Dlatego pozostaję z wtyczką trybu python.
Poza tym, że tryb pythona wydaje się nieobsługiwany (patrz otwarte żądania ściągania i ostatnie zatwierdzenia) i obecnie ma ogromny błąd dotyczący liny w gałęzi głównej, przeszkadza w YouCompleteMe. Dostaję trochę kodu do Pythona 3 do działania, ale tylko wtedy, gdy całkowicie wyłączę YouCompleteMe. Czarna lista YCM dla typów plików python lub wyłączanie uzupełniania YCM dla plików python nie działa, otrzymuję ostrzeżenie YCM przy każdym otwarciu vima.
Więc moje pytania to:
Jak mogę uzyskać autouzupełnianie w Pythonie 3 do pracy z bieżącą dystrybucją Debiana, nie wyłączając YouCompleteMe (co chcę dla innych języków programowania)? Dlaczego nieobsługiwana wtyczka jest obecnie jedynym wyborem do uzupełnienia kodu dla tak ważnego języka programowania (Python 3 nie może być już uważany za nowy ...)?
Odpowiedzi:
Idealnym sposobem jest zdobycie źródła Vima i samodzielne skompilowanie go.
Krok 1: W przypadku systemów podobnych do Debiana uzyskaj wymagane pakiety:
Krok 2: Kod źródłowy Clone Vima:
Krok 3: Skonfiguruj, wykonaj, zainstaluj
Krok 4: Gotowe! Powinieneś mieć ogromną wersję vima z obsługą + python3. Ma również obsługę schowka, dzięki czemu można go używać ze schowkiem systemowym i wersją GUI.
Oczywiście możesz usunąć flagi konfiguracji, których nie chcesz, lub dodać. YouCompleteMe faktycznie ma dość długą wiki poświęconą wyjaśnieniu, jak zbudować Vima ze źródła tutaj
źródło
:echo has('python3')
, dostaję0
, a:echo has('python')
wraca1
. Mam następujące opcje w moim .vimrc, ale one nie pomagają:let g:ycm_path_to_python_interpreter = '/usr/bin/python3 let g:ycm_filetype_specific_completion_to_disable = { 'python' : 1 } let g:ycm_filetype_blacklist = { 'python' : 1 }
.apt-get build-dep vim
.dsc
plik połączony na pasku bocznym. Uważam, że wszystkie pakiety, które zasugerowałeś, z wyjątkiemmercurial
, są albo bezpośrednio, albo tranzytowo wymienione jakoBuild-Depends
. W szczególnościlibgnomeui-dev
jest prawdopodobnie odpowiedzialny za wiele z tych zależności.jedi-vim działa teraz dla mnie dobrze z obsługą + python3 w vimie. W dodany następującą opcję do mojego .vimrc:
let g:jedi#force_py_version = 3
.źródło
Pisząc to bardziej jako notatkę dla siebie niż cokolwiek innego, ale być może przyda się to niektórym: w Arch Linux możesz zainstalować wersję vima skompilowaną z python3:
Wpisz y, a to zastąpi twój obecny vim vimem z włączonym Python3.
Następnie:
zainstaluje autouzupełnianie dla python3.
źródło
Od kilku tygodni YouCompleteMe obsługuje uzupełnianie Python3 przy użyciu Jedi przez opakowanie JediHTTP. Zainstaluj tylko YouCompleteMe (nie trzeba instalować jedi-vim) zgodnie z instrukcjami instalacji i dodaj następujący wiersz do
.vimrc
:Zmusza to YCM do używania Jedi z Python3 (domyślnie jest to używanie Jedi z tym samym interpreterem Python, który jest używany przez serwer ycmd, którym jest Python2).
Działa to bez względu na to, czy Twój Vim jest skompilowany z
+python3
flagą czy bez niej - otrzymujesz autouzupełnianie Python3 (i przeglądanie dokumentacji i więcej).źródło
Jestem w pozycji, w której muszę ciągle przełączać się między dwoma projektami Pythona, jeden za pomocą Pythona 2, a drugi Python 3. Jak zauważyłeś, twój completeme nie działa z Pythonem 3.
Najpierw skompilowałem dodatkową wersję vima z Pythonem 3 (którą zaczynam od vim3) i używam vundle jako menedżera wtyczek.
W moim .vimrc mam:
Wyłącza cię, kiedy uruchamiam vim3, ale zamiast tego mam autouzupełnianie jedi-vim. Dopiero zacząłem go używać, a ten post na blogu mówi, że nie są one ze sobą kompatybilne, ale dla mnie działa autouzupełnianie w obu, działa w trybie przejścia do definicji jedi, działa w trybie python w trybie python i żadna wtyczka nie narzeka na uruchomienie. Jak dotąd wszystko dobrze :)
źródło
Użyj deoplete i deoplete-jedi, jeśli jesteś otwarty na neovim. Z mojego doświadczenia wynika, że działa to całkiem dobrze, gdzie YCM ma trochę problemów.
źródło