Apakah mungkin untuk memiliki nama fungsi, variabel, dll. Yang dilengkapi secara otomatis saat menggunakannya untuk memprogram?
56
Banyak IDE secara otomatis melengkapi nama fungsi, variabel, nama metode, dll. Sebagai tipe pengguna. Yang terbaik melengkapi nama-nama berdasarkan pustaka built-in bahasa serta apa yang telah didefinisikan dalam file lain dari program yang sama.
Misalnya, saat saya mengetik program Python berikut:
hungy = True
def eatFood(food):
pass
if hungry:
eatF
saluran eatFakan secara otomatis ditampilkan eatFood()sebagai opsi pelengkapan otomatis yang tersedia.
Apakah Vim memiliki kemampuan ini? Jika demikian, bagaimana saya bisa mengaktifkannya?
Ada banyak jenis autocomplete dalam vim. Salah satu cara mungkin menggunakan SuperTab . Ini memberikan cara untuk menggunakan penyelesaian tab pada waktu yang kurang lebih setiap saat. Ini akan memungkinkan Anda untuk memukul Tabsetelah Anda mengetik sebagian kata untuk mendapatkan daftar penyelesaian. Misalnya, mengetik eatFdiikuti oleh Tabuntuk memperluas keeatFood.
Harap Catatan : gambar-gambar ini semua tautan ke contoh gifs yang sedang beraksi.
Vim memiliki opsi lain yang luar biasa. Anda harus membaca :h ins-completionuntuk melihat berbagai opsi penyelesaian bawaan. Menggunakan vim's Ctrl- XCtrl- O, dikombinasikan dengan plugin python-aware seperti jedi dapat memberikan rasa penyelesaian. Jedi dapat dikonfigurasi untuk memberikan dokumentasi tentang penyelesaian-omni (ini adalah apa Ctrl- XCtrl- Otidak). Kemudian dokumentasi untuk kandidat yang lengkap akan muncul di jendela terpisah.
Menggunakan plugin serupa tetapi opsi yang berbeda mengarah ke semua jenis perilaku. Mungkin, misalnya, untuk tidak perlu meminta pelengkapan otomatis (jika itu yang Anda cari). Alih-alih, setelah Anda mengetik beberapa huruf (misalnya, 2 atau 3) kata, sebuah plugin dapat mencoba menawarkan secara cerdas kemungkinan penyelesaian dalam suatu menu.
Jadi jawaban singkatnya adalah ya! Tetapi proses konfigurasi bisa sedikit rumit. Saya menganggapnya sebagai langkah di tangga panjang untuk menguasai vim.
Saya sudah mencoba semuanya dan saya selalu kembali ke SuperTab, itu yang paling tidak mengganggu.
craigp
1
Saya juga sangat menyukai plugin YouCompleteMe, karena ini menyarankan Anda mengetik dan Anda dapat memilih atau mengabaikan saran. Ya, secara visual sulit untuk diabaikan, tetapi sangat tidak mengganggu dalam alur kerja saya karena membutuhkan lebih sedikit stroke kunci.
Thriveth
3
Saya telah mengubah animasi menjadi "klik", dalam arti bahwa mereka terkait dengan animasi gif.
davidlowryduda
1
Saya tidak dapat menggunakan YouCompleteMe di komputer kerja saya karena saya tidak memiliki root untuk menginstal dependensi, SuperTab sejauh ini merupakan pilihan terbaik berikutnya.
Charles Clayton
@mixedmath Dalam kasus saya, SuperTab tidak berfungsi.
alhelal
24
Fungsionalitas tersebut - yaitu, mencari file saat ini (dan semua file yang terbuka) untuk penyelesaian otomatis, harus diaktifkan secara default dengan Ctrl+P:
Anda dapat pergi ke n ext saran dengan Ctrl+N, yang p saran revious dengan Ctrl+Pdan pilih dengan mengetikkan huruf apa saja (yang akan ditambahkan tepat setelah saran).
Kepada editor (Jasper): Saya lebih cenderung ingin menulis lagi sesuatu yang telah saya tulis baru-baru ini, bukan sesuatu yang akan saya tulis di masa depan atau yang ada di awal file. Oleh karena ^Pitu IMHO lebih alami. Kalau tidak, terima kasih untuk suntingan (saya harap saya mengklik tombol kanan dan Anda mendapat +2 Anda).
yo '
1
Ya, saya mendapatkan poin-poin internet imajiner itu :) Saya selalu berpikir bahwa daftar saran akan disortir berdasarkan abjad ...
Jasper
@Jasper urutan penampilan itu (setidaknya bagi saya tentu saja, lihat juga di atas: world,word,wooddan bukan sebaliknya). Jadi ^Padalah penyelesaian yang terakhir digunakan, yang sangat berguna (saya jarang melangkah lebih jauh dari 3 item dalam daftar, bahkan dalam file yang panjang).
yo '
protip:inoremap <C-Space> <C-N>
wchargin
20
Vim memiliki dukungan untuk penyelesaian secara asli. Anda dapat membaca tentang berbagai penyelesaian berbeda yang didukung oleh Vim :h ins-completion.
Secara umum, untuk semua tujuan yang saya temukan, penyelesaian-in-in cukup sesuai dengan keinginan saya, namun ada beberapa plugin penyelesaian yang menambah nilai lebih dari yang ditawarkan oleh penyelesaian-in. NeoComplete , YCM (YouCompleteMe) adalah beberapa untuk hal yang sama. Mereka lebih maju dalam arti bahwa mereka mencoba untuk menggabungkan berbagai jenis penyelesaian yang lebih akurat, dan mereka juga memiliki mekanisme caching tingkat lanjut, sehingga mereka cenderung lebih cepat. YCM bahkan bekerja dengan kompiler / utilitas eksternal untuk menyediakan IntelliSense yang lebih baik.
Ya, skrip penyelesaian otomatis untuk vim ada. Pilihan "terbaik" tergantung pada bahasa pemrograman Anda. Sebagai contoh kode Anda adalah Python, saya sarankan untuk melihat Jedi . Bangun di atas itu, Anda melengkapi saya ada, yang juga memiliki dukungan untuk bahasa lain, tetapi kadang-kadang dianggap terlalu besar. Untuk bahasa lain, Anda dapat menelusuri skrip vim yang telah ditetapkan sebelumnya .
Fungsionalitas tersebut - yaitu, mencari file saat ini (dan semua file yang terbuka) untuk penyelesaian otomatis, harus diaktifkan secara default dengan
Ctrl+P
:Anda dapat pergi ke n ext saran dengan
Ctrl+N
, yang p saran revious denganCtrl+P
dan pilih dengan mengetikkan huruf apa saja (yang akan ditambahkan tepat setelah saran).sumber
^P
itu IMHO lebih alami. Kalau tidak, terima kasih untuk suntingan (saya harap saya mengklik tombol kanan dan Anda mendapat +2 Anda).world,word,wood
dan bukan sebaliknya). Jadi^P
adalah penyelesaian yang terakhir digunakan, yang sangat berguna (saya jarang melangkah lebih jauh dari 3 item dalam daftar, bahkan dalam file yang panjang).inoremap <C-Space> <C-N>
Vim memiliki dukungan untuk penyelesaian secara asli. Anda dapat membaca tentang berbagai penyelesaian berbeda yang didukung oleh Vim
:h ins-completion
.Secara umum, untuk semua tujuan yang saya temukan, penyelesaian-in-in cukup sesuai dengan keinginan saya, namun ada beberapa plugin penyelesaian yang menambah nilai lebih dari yang ditawarkan oleh penyelesaian-in. NeoComplete , YCM (YouCompleteMe) adalah beberapa untuk hal yang sama. Mereka lebih maju dalam arti bahwa mereka mencoba untuk menggabungkan berbagai jenis penyelesaian yang lebih akurat, dan mereka juga memiliki mekanisme caching tingkat lanjut, sehingga mereka cenderung lebih cepat. YCM bahkan bekerja dengan kompiler / utilitas eksternal untuk menyediakan IntelliSense yang lebih baik.
sumber
Ya, skrip penyelesaian otomatis untuk vim ada. Pilihan "terbaik" tergantung pada bahasa pemrograman Anda. Sebagai contoh kode Anda adalah Python, saya sarankan untuk melihat Jedi . Bangun di atas itu, Anda melengkapi saya ada, yang juga memiliki dukungan untuk bahasa lain, tetapi kadang-kadang dianggap terlalu besar. Untuk bahasa lain, Anda dapat menelusuri skrip vim yang telah ditetapkan sebelumnya .
sumber
Dalam mode sisipkan, ketikkan pasangan karakter pertama dari sebuah kata, lalu tekan:
Ini sangat berguna saat memasukkan nama-nama variabel dalam suatu program.
Opsi 'lengkap' mengontrol tempat kata kunci dicari (termasuk file, file tag, buffer, dan lainnya).
Opsi 'completeopt' mengontrol bagaimana penyelesaian terjadi (misalnya, apakah menu ditampilkan).
sumber