Ich verwende Debian Jessie und benutze das aktuelle vim-nox (mit + python -python3). Es fällt mir schwer, in Python 3 zu programmieren, da ich mit der Vervollständigung des Python 3-Codes zu kämpfen habe.
YouCompleteMe unterstützt Python3 überhaupt nicht. jedi-vim unterstützt die Python 3-Vervollständigung, aber nur, wenn ich die + python3-Option hätte, wenn ich sie richtig verstehe. Aus mehreren Beiträgen von Debian-Entwicklern geht hervor, dass das Kompilieren von Vim mit dem Flag + python3 nicht wirklich funktioniert. Daher habe ich das Python-Mode-Plugin.
Abgesehen von der Tatsache, dass der Python-Modus nicht aufrechterhalten zu sein scheint (siehe offene Pull-Requests und Last Commits) und derzeit einen großen Fehler in Bezug auf das Seil in seinem Master-Zweig aufweist, stört er YouCompleteMe. Ich bekomme einige Python 3-Code-Vervollständigung zum Laufen, aber nur, wenn ich YouCompleteMe vollständig deaktiviere. Das Sperren von YCM für Python-Dateitypen oder das Deaktivieren der YCM-Vervollständigung für Python-Dateien funktioniert nicht. Ich erhalte jedes Mal eine YCM-Warnung, wenn ich vim öffne.
Meine Fragen sind also:
Wie kann ich eine Python 3-Autovervollständigung auf eine aktuelle Debian-Distribution anwenden, ohne YouCompleteMe zu deaktivieren (was ich für andere Programmiersprachen möchte)? Wieso ist ein nicht gepflegtes Plugin momentan die einzige Wahl, um den Code für eine so wichtige Programmiersprache zu vervollständigen (Python 3 kann nicht mehr als neu angesehen werden ..)?
Antworten:
Am besten holen Sie sich den Quellcode von Vim und kompilieren ihn selbst.
Schritt 1: Für Debian-ähnliche Systeme besorgen Sie sich die erforderlichen Pakete:
Schritt 2: Klonen Sie den Quellcode von Vim:
Schritt 3: Konfigurieren, Erstellen, Installieren
Schritt 4: Fertig! Sie sollten eine riesige Version von vim mit + python3-Unterstützung haben. Es hat auch + Zwischenablage-Unterstützung, so dass Sie es mit Ihrer System-Zwischenablage und einer GUI-Version verwenden können.
Natürlich können Sie configure - Flags entfernen Sie nicht wollen , oder etwas in hinzufügen. YouCompleteMe hat eigentlich eine ziemlich Wiki Länge gewidmet erklären , wie Vim von der Quelle zu bauen hier
quelle
:echo has('python3')
bekomme ich0
, während:echo has('python')
zurückkehrt1
. Ich habe folgende Optionen in meinem .vimrc, aber sie helfen nicht: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
in der Seitenleiste verknüpfte Datei. Ich glaube, dass alle Pakete, die Sie vorgeschlagen habenmercurial
, entweder direkt oder transitiv als aufgeführt sindBuild-Depends
. Insbesonderelibgnomeui-dev
ist wahrscheinlich für viele dieser Abhängigkeiten verantwortlich.jedi-vim funktioniert jetzt für mich mit + python3-unterstützung in vim. In hinzugefügt , um die folgende Option auf meine .vimrc:
let g:jedi#force_py_version = 3
.quelle
Schreiben Sie dies mehr als Notiz an mich selbst als an alles andere, aber vielleicht ist dies für einige nützlich: Unter Arch Linux können Sie eine mit python3 kompilierte Version von vim installieren:
Geben Sie y ein und dies ersetzt Ihr vorhandenes vim durch das python3-fähige vim.
Dann:
Installiert die Autovervollständigung für Python3.
quelle
YouCompleteMe unterstützt seit einigen Wochen die Python3-Vervollständigung mit Jedi über einen JediHTTP-Wrapper. Installieren Sie YouCompleteMe nur gemäß den Installationsanweisungen (es ist nicht erforderlich, jedi-vim zu installieren) und fügen Sie die folgende Zeile hinzu
.vimrc
:Dies zwingt YCM, Jedi mit Python3 zu verwenden (standardmäßig wird Jedi mit demselben Python-Interpreter verwendet, der vom ycmd-Server verwendet wird, nämlich Python2).
Dies funktioniert unabhängig davon, ob Ihr Vim mit oder ohne
+python3
Flag kompiliert wurde - Sie erhalten die automatische Vervollständigung von Python3 (und die Dokumentation wird nachgeschlagen und vieles mehr).quelle
Ich bin in der Lage, ständig zwischen zwei Python-Projekten zu wechseln, eines mit Python 2 und das andere mit Python 3. Wie Sie bemerkt haben, funktioniert youcompleteme nicht mit Python 3.
Zuerst habe ich eine zusätzliche Version von vim mit Python 3 kompiliert (ich beginne mit vim3) und ich benutze vundle als Plugin-Manager.
In meinem .vimrc habe ich:
Es deaktiviert youcompleteme, wenn ich vim3 ausführe, aber ich habe stattdessen die automatische Vervollständigung von jedi-vim. Ich habe gerade erst damit angefangen, und in diesem Blog-Beitrag heißt es, dass sie nicht miteinander kompatibel sind, aber für mich funktioniert Autocomplete in beiden, jedis Go-to-Definition-Arbeiten, Python-Mode's Pylint-Arbeiten und keine Plugins, die sich beim Start beschweren. Alles gut soweit :)
quelle
Verwenden Sie deoplete und deoplete-jedi, wenn Sie neovim gegenüber aufgeschlossen sind. Nach meiner Erfahrung funktioniert das ganz gut, da YCM ein bisschen Ärger hat.
quelle