Beberapa editor (seperti studio visual di windows) melakukan pelengkapan otomatis C ++ yang memahami C ++. Misalnya, diberikan:
#include <vector>
int main(void) {
std::vector<int> v;
v.i
Dalam visual studio penyelesaian otomatis tahu satu-satunya metode std::vector<int>
yang dimulai dengan i adalah insert
.
Apakah mungkin mendapatkan pelengkapan otomatis semacam ini di vim?
ide
autocompletion
filetype-c++
Chris Jefferson
sumber
sumber
cd
mengedit direktori plugin YCM (~/.vim/bundle
untuk saya), dan berlari./install --clang-completer
.Jawaban:
Saya sangat suka clang_complete untuk ini. Itu memang membutuhkan dentang, dan Anda harus mengatakan di mana libclang berada di sistem Anda. Setelah itu, ia bekerja dengan sangat baik.
Orang mungkin menyarankan YouCompleteMe, tetapi jujur, plugin itu sangat membengkak untuk apa yang dikatakannya, dan itu membutuhkan terlalu banyak langkah untuk menginstal. Saya juga memilikinya segfault Vim pada beberapa kesempatan. Saya tidak bisa lebih bahagia dengan clang_complete.
Ini yang saya dapatkan ketika saya mengetik
v.
:sumber
return 0
bawah menu popup itu.Plugin YouCompleteMe ( Link ) telah bekerja sangat baik untuk saya. Ini menggunakan libclang untuk menghasilkan fitur autocomplete, memberikan penyelesaian yang akurat.
Ini memiliki banyak penyesuaian, khususnya ketika bekerja dengan flag-flag kompilasi. Anda dapat mengedit "pembuat bendera" dengan mengedit skrip python per proyek ( Contoh ). Tapi, bagi saya keuntungan utama adalah mendukung Clang Compilation Database ( Link! ). Ini berarti bahwa Anda dapat mengkompilasi kode Anda secara normal dan meminta dentang untuk meludah semua flag yang digunakan untuk kompilasi, dan menggunakan flag tersebut dengan YouCompleteMe. Sangat berguna jika Anda ingin alat pelengkapan otomatis tahu tentang definisi makro Anda atau lokasi semua file header di sistem Anda tanpa usaha mengetik secara manual.
sumber
YouCompleteMe tidak terlalu sulit untuk diinstal, dan sudah cukup stabil untuk saya, saya telah bermigrasi dari clang_complete ke YouCompleteMe tahun yang lalu. Satu hal yang saya setuju, itu memang membengkak dengan sejarah komit yang besar, banyak dependensi internal dan dukungan untuk banyak bahasa yang Anda mungkin tidak peduli tapi masih akan berakhir mengkloning submodul yang terkait. Itu, itu masalah dengan YouComplemeMe, masih .... itu berfungsi.
Saya telah mengerjakan garpu dengan tujuan khusus untuk mendukung C ++ dengan lebih baik, Anda dapat memeriksa gif yang memamerkannya:
https://s3.amazonaws.com/f.cl.ly/items/1e2F0A123h331c1G0L0R/SadBart.gif
Ini memanfaatkan informasi parameter baru yang dapat disediakan oleh Clang, Anda dapat mempelajari lebih lanjut tentang ini dari artikel saya ini: http://nosubstance.me/articles/2015-01-29-better-completion-for-cpp/ .
sumber