Penyelesaian otomatis di Vim

258

Setelah "pelatihan" yang lama, saya akhirnya beralih ke Vim; tapi saya punya masalah dengan pelengkapan otomatis. Bagaimana saya bisa mendapatkan saran kode saat saya mengetik?

Saya biasanya mengembangkan PHP, Ruby, HTML, C dan CSS.

diegocstn
sumber

Jawaban:

144

Anda dapat menggunakan plugin seperti AutoComplPop untuk mendapatkan penyelesaian kode otomatis saat Anda mengetik.

Edit 2015: Saya pribadi menggunakan YouCompleteMe sekarang.

michaelmichael
sumber
10
Ini sangat dianjurkan. Berusaha keras mengetik CX CO, CP atau CN.
Amjith
Saya sudah mencoba ini tetapi sepertinya tidak berhasil .. mungkin ada konflik dengan skrip lain ..
diegocstn
1
Apakah Anda meletakkan file ke direktori yang ditentukan di ~ / .vim?
michaelmichael
1
@dieguitoweb ACP tidak bekerja dengan setiap tipe file secara default. Anda harus "meretas" untuk membuatnya berfungsi dengan JavaScript, ActionScript dan PHP. Di sini saya menjelaskan bagaimana saya melakukannya. Dan di sini ada petunjuk lain untuk PHP.
romainl
sekarang berfungsi :) semua file sudah ada di direktori yang benar .. Saya hanya mengganti skrip dengan unduhan baru dari repositori git dan sekarang tidak masalah. terima kasih banyak
diegocstn
438

Gunakan Ctrl- Nuntuk mendapatkan daftar saran kata saat dalam mode sisipkan. Ketik :help i_CTRL-Nuntuk melihat dokumentasi Vim tentang fungsi ini.

Berikut adalah contoh mengimpor kamus Python ke Vim.

Orbit
sumber
15
terima kasih ini bagus, tetapi bagaimana saya bisa membuat daftar ini secara otomatis tanpa menekan <ctrl + N>?
diegocstn
5
Itulah yang dikatakan michaelmichael dengan plugin yang dia sebutkan. Juga, Anda mungkin melihat SuperTab.
projecktzero
4
Untuk dukungan CSS, tambahkan tanda hubung untuk built in autocomplete dengan menambahkan 'set iskeyword + = -' ke .vimrc
mahalie
3
Ini adalah cara yang paling komprehensif dan asli untuk melakukannya :-)
Srikant
5
@ Hai-Malaikat bagian 'otomatis' adalah bahwa ia secara otomatis menentukan opsi untuk penyelesaian kata, dan secara otomatis bersaing kata pada pilihan pilihan.
CJBS
26

Jika Anda menggunakan VIM versi 8+, cukup ketik Ctrl + natau Ctrl + p.

Polo Ângelo
sumber
11

Anda bisa mulai dari bawaan omnifunc pengaturan bawaan.

Cukup cantumkan:

filetype plugin on
au FileType php setl ofu=phpcomplete#CompletePHP
au FileType ruby,eruby setl ofu=rubycomplete#Complete
au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags
au FileType c setl ofu=ccomplete#CompleteCpp
au FileType css setl ofu=csscomplete#CompleteCSS

di bagian bawah Anda .vimrc, lalu ketik <Ctrl-X><Ctrl-O>mode insert.

Saya selalu mengandalkan penyelesaian CSS ini.

ernix
sumber
apa setlartinya Terima kasih.
qed
Ok, saya mengerti, itu berarti setlocal. Tapi mengapa kita perlu setlocal di sini?
qed
Lihatlah bagaimana itu mengganggu Anda ketika Anda membuka file lain di buffer yang sama.
ernix
2
@ernix Dari tautan Anda: Buffer di Vim adalah ... contoh terbuka dari suatu file ... Saya tahu tentang buffer, windows, dan tab; tapi saya tidak tahu tentang membuka file lain di buffer yang sama. Sepertinya saya bahwa ketika Anda membuka file itu akan selalu terbuka di buffer baru dan menambahkan buffer itu ke daftar buffer. Saya tahu ada cara lain buffer digunakan, seperti daftar perbaikan cepat, tapi saya tidak tahu tentang mengubah file apa yang ada di buffer. :h buffersmengatakan: Buffer adalah file yang dimuat ke dalam memori untuk diedit. Yang mengatakan, saya hanya serius menggunakan Vim untuk 3 mos. dan tentu saja terbuka untuk koreksi.
JakeD
1
@ JakeD Ah ya. Kamu benar. Saya mengambil "contoh" yang berarti cara yang salah. Saya salah paham bahwa Anda berbicara tentang proses dengan PID yang berbeda. Maaf, lupakan saja apa yang saya katakan.
ernix
6

Saya baru-baru ini menemukan sebuah proyek bernama OniVim , yang merupakan front-end berbasis elektron untuk NeoVim yang dilengkapi dengan autocomplete yang sangat bagus untuk beberapa bahasa di luar kotak, dan karena itu pada dasarnya hanya pembungkus sekitar NeoVim, Anda memiliki kekuatan penuh vim siap membantu Anda jika GUI tidak memenuhi kebutuhan Anda. Ini masih dalam pengembangan awal, tetapi dengan cepat membaik dan ada komunitas yang sangat aktif di sekitarnya. Saya telah menggunakan vim selama lebih dari 10 tahun dan mulai memberikan test drive Oni beberapa minggu yang lalu, dan sementara itu memang memiliki beberapa bug di sana-sini itu belum menghalangi saya. Saya akan sangat merekomendasikan ini kepada pengguna vim baru yang masih mendapatkan jari vim mereka!

masukkan deskripsi gambar di sini

OniVim: https://www.onivim.io/

Parker Ault
sumber
32
bagi saya seluruh titik vim menggunakan terminal ... jika saya ingin menggunakan aplikasi elektron, saya hanya akan menggunakan vscode dengan ekstensi vim ..
Mohamed Benkedadra
2
@MohamedBenkedadra Tapi apakah itu benar-benar membuat Anda mendapatkan kekuatan penuh Vim? Saya kebetulan penggemar berat sistem pencarian-dan-ganti pola, untuk satu hal, dan saya akan terkejut jika plugin vim-emulation mendukungnya.
SilverWolf - Pasang kembali Monica
3

Saya telah menggunakan neocomplcache selama sekitar setengah tahun. Ini adalah plugin yang mengumpulkan cache kata-kata di semua buffer Anda dan kemudian menyediakannya untuk Anda lengkapi secara otomatis.

Ada serangkaian tangkapan layar di halaman proyek di tautan sebelumnya. Neocomplcache juga memiliki banyak opsi konfigurasi, di mana ada contoh dasar pada halaman proyek juga.

Jika Anda perlu lebih mendalam, Anda dapat melihat bagian yang relevan di vimrc saya - cukup cari kata neocomplcache.

sp3ctum
sumber
1

Ini tautannya ! untuk PHP.

tekan Ctrl + x diikuti oleh tombol Ctrl + o sambil menulis beberapa fungsi PHP.

Terima kasih kepada Oseems Solutions untuk tutorialnya

Brian Kenya
sumber
1

Jika Anda hanya ingin penyelesaian otomatis dari cache buffer Anda saat ini, supertab lebih mudah untuk diinstal daripada neocomplete , dapat berfungsi pada Mac yang sudah diinstal sebelumnya vim out of box tanpa perlu MacVim.

Anda dapat memeriksa alternatif lain di vim awesome .

tning
sumber
0

Untuk PHP, Padawan dengan Deoplete adalah solusi hebat untuk memiliki pelengkapan otomatis PHP yang kuat di Neovim. Saya mencoba banyak hal dan Padawan bekerja seperti pesona!

Untuk Vim Anda bisa menggunakan Neocomplete bukan Deoplete.

Saya menulis artikel cara membuat IDE PHP Vim jika seseorang tertarik. Tentu saja Padawan adalah bagian dari itu.

Matthieu
sumber
0

Pilihan lain adalah coc.nvim .

Ini sangat cepat dan penyelesaiannya bagus karena menggunakan intellisense autocompletion yang sama seperti yang dimiliki VScode. Ini juga memiliki kemampuan linting. Jadi itu menunjukkan kalau Anda mungkin memiliki bug. Ini mendukung banyak bahasa.

Mungkin butuh sedikit untuk mengatur dan mengkonfigurasi tapi saya pikir itu adalah mesin pelengkapan otomatis terbaik untuk vim di luar sana.

ak17
sumber