Saya menjalankan Debian Jessie dan menggunakan vim-nox saat ini (dengan + python -python3). Saya mengalami kesulitan mencoba program di Python 3, karena saya berjuang dengan penyelesaian kode Python 3.
YouCompleteMe tidak mendukung Python3 sama sekali. jedi-vim mendukung penyelesaian Python 3, tetapi hanya jika saya memiliki opsi + python3 jika saya memahaminya dengan benar. Dari beberapa posting dari Pengembang Debian tampaknya mengkompilasi Vim dengan flag + python3 tidak benar-benar berfungsi. Oleh karena itu saya dibiarkan dengan plugin mode python.
Selain fakta bahwa mode-python tampaknya tidak terawat (lihat permintaan tarik terbuka dan komit terakhir) dan saat ini memiliki bug besar mengenai tali di cabang masternya, itu mengganggu YouCompleteMe. Saya mendapatkan beberapa penyelesaian kode Python 3 untuk bekerja, tetapi hanya jika saya menonaktifkan YouCompleteMe sepenuhnya. Daftar hitam YCM untuk tipe file python atau menonaktifkan penyelesaian YCM untuk file python tidak berfungsi, saya mendapatkan peringatan YCM setiap kali saya membuka vim.
Jadi pertanyaan saya adalah:
Bagaimana saya bisa mendapatkan pelengkapan otomatis Python 3 untuk bekerja pada distribusi Debian saat ini sementara tidak menonaktifkan YouCompleteMe (yang saya inginkan untuk bahasa pemrograman lain)? Kenapa plugin yang tidak dirawat adalah satu-satunya pilihan saat ini untuk penyelesaian kode untuk bahasa pemrograman yang begitu penting (Python 3 tidak dapat lagi dianggap baru ..)?
Jawaban:
Cara ideal adalah untuk mendapatkan sumber Vim dan kompilasi sendiri.
Langkah 1: Untuk sistem seperti Debian, dapatkan paket yang diperlukan:
Langkah 2: Kode sumber Clone Vim:
Langkah 3: Konfigurasi, Buat, Instal
Langkah 4: Selesai! Anda harus memiliki versi vim yang besar, dengan dukungan + python3. Ini juga memiliki dukungan + clipboard sehingga Anda dapat menggunakannya dengan clipboard sistem Anda, dan versi gui.
Tentu saja, Anda dapat menghapus flag konfigurasi yang tidak Anda inginkan atau menambahkan beberapa. YouCompleteMe sebenarnya memiliki wiki yang cukup panjang yang didedikasikan untuk menjelaskan cara membuat Vim dari sumber di sini
sumber
:echo has('python3')
saya dapatkan0
, sedangkan:echo has('python')
kembali1
. Saya memiliki pilihan berikut di vimrc saya, tetapi mereka tidak membantu: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
file yang tertaut di sidebar. Saya percaya semua paket yang Anda sarankan, kecualimercurial
, secara langsung atau transitif terdaftar sebagaiBuild-Depends
. Secara khusus,libgnomeui-dev
mungkin bertanggung jawab atas banyak dari ketergantungan itu.jedi-vim berfungsi dengan baik untuk saya sekarang dengan dukungan + python3 di vim. Dalam menambahkan opsi berikut untuk .vimrc saya:
let g:jedi#force_py_version = 3
.sumber
Menulis ini lebih sebagai catatan untuk diri saya sendiri daripada apa pun, tetapi mungkin ini akan bermanfaat bagi beberapa orang: di Arch Linux, Anda dapat menginstal versi vim yang dikompilasi dengan python3:
Ketik y dan ini akan menggantikan vim Anda yang ada dengan vim diaktifkan python3.
Kemudian:
akan menginstal pelengkapan otomatis, untuk python3.
sumber
Sejak beberapa minggu, YouCompleteMe mendukung penyelesaian Python3 menggunakan Jedi melalui pembungkus JediHTTP. Hanya instal YouCompleteMe (tidak perlu menginstal jedi-vim) sesuai dengan instruksi instalasi dan tambahkan baris berikut ke Anda
.vimrc
:Ini memaksa YCM untuk menggunakan Jedi dengan Python3 (standarnya adalah menggunakan Jedi dengan interpreter Python yang sama yang digunakan oleh server ycmd, yaitu Python2).
Ini berfungsi tidak masalah jika Vim Anda dikompilasi dengan atau tanpa
+python3
flag - Anda mendapatkan pelengkapan otomatis Python3 (dan dokumentasi mencari dan banyak lagi).sumber
Saya berada dalam posisi di mana saya harus terus-menerus beralih antara dua proyek python, satu menggunakan python 2 dan python 3. Seperti yang Anda catat, Anda kompleteme tidak berfungsi dengan python 3.
Pertama saya mengkompilasi versi tambahan vim dengan python 3 (yang saya mulai dengan vim3) dan saya menggunakan vundle sebagai plugin manager.
Di .vimrc saya, saya punya:
Ini menonaktifkan Andacompleteme ketika saya menjalankan vim3, tetapi saya memiliki jedi-vim autocomplete sebagai gantinya. Saya baru saja mulai menggunakannya, dan posting blog ini mengatakan mereka tidak kompatibel bersama tetapi bagi saya autocomplete berfungsi di keduanya, karya definisi-jedi, pekerjaan pylint mode-python dan tidak ada plugin yang mengeluh saat startup. Semua baik sejauh ini :)
sumber
Gunakan deoplete dan deoplete-jedi jika Anda terbuka untuk neovim. Dalam pengalaman saya ini bekerja dengan baik, di mana YCM memiliki sedikit kerepotan.
sumber