Vim'de otomatik tamamlama


260

Uzun bir "eğitimden" sonra nihayet Vim'e geçtim; ancak otomatik tamamlama ile ilgili bir sorunum var. Yazarken nasıl bir kod önerisi alabilirim?

Genellikle PHP, Ruby, HTML, C ve CSS geliştiriyorum.

Yanıtlar:


144

Siz yazarken otomatik kod tamamlama elde etmek için AutoComplPop gibi bir eklenti kullanabilirsiniz .

2015 Edit: Şahsen YouCompleteMe kullanıyorum .


10
Bu şiddetle tavsiye edilir. CX CO, CP veya CN yazmak için çaba sarf eder.
Amjith

Bunu denedim ama işe yaramıyor gibi görünüyor .. muhtemelen diğer komut dosyaları ile bir çatışma var ..
diegocstn

1
~ / .vim içindeki dosyaları belirtilen dizinlere mi koyuyorsunuz?
michaelmichael

1
@dieguitoweb ACP varsayılan olarak her dosya türüyle çalışmaz. JavaScript, ActionScript ve PHP ile çalışabilmesi için "hacklemeniz" gerekir. Burada nasıl yaptığımı açıklıyorum. Ve işte PHP için başka bir ipucu.
romainl

şimdi işe yarıyor :) tüm dosyalar zaten doğru dizinlerde idi .. Ben sadece git deposundan yeni bir indirme ile betiği değiştirdim ve şimdi iyi. çok teşekkürler
diegocstn

439

Ekleme modundayken sözcük önerilerinin bir listesini almak için Ctrl- tuşlarını kullanın N. Tip :help i_CTRL-NBu işlevselliği Vim'ın belgelere bakın.

İşte Python sözlüğünü Vim'e aktarmanın bir örneği.


15
teşekkürler bu harika, ama bu listeyi <ctrl + N> tuşuna basmadan otomatik olarak nasıl alabilirim?
diegocstn

5
Michaelmichael, bahsettiği eklenti ile size söylüyordu. Ayrıca, SuperTab'a da bakabilirsiniz.
projecktzero

4
Senin .vimrc için - otomatik tamamlamada inşa CSS desteği için 'iskeyword + = set' ekleyerek tire eklemek
mahalie

3
Bu, bunu yapmanın en kapsamlı ve yerel yoludur :-)
Srikant

5
@ Hi-Angel 'otomatik' bölümü, bir sözcüğün tamamlanması için seçenekleri otomatik olarak belirlemesi ve bir seçeneğin seçilmesiyle sözcüğü otomatik olarak yarışmasıdır.
CJBS


11

Yerleşik omnifuncayardan başlayabilirsiniz .

Sadece koy:

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

yazın .vimrc, ardından <Ctrl-X><Ctrl-O>ekleme kipini yazın.

Her zaman bu CSS tamamlamasına güveniyorum.


ne setldemek Teşekkürler.
qed

Tamam, anladım, setlocal demek. Ama neden setlocal'a ihtiyacımız var?
qed

Aynı arabellekte başka bir dosyayı açtığınızda nasıl sinir bozduğuna bir göz atın.
ernix

2
@ernix Bağlantınızdan: Vim'deki bir tampon ... dosyanın açık bir örneğidir ... Arabellekleri, pencereleri ve sekmeleri biliyorum; ama aynı arabellekte başka bir dosya açmayı bilmiyorum. Bana öyle geliyor ki, bir dosyayı açtığınızda her zaman yeni bir arabellekte açılacak ve bu arabellek arabellek listesine eklenecektir. Hızlı düzeltme listesi gibi arabelleklerin kullanıldığı başka yollar olduğunu biliyorum, ancak bir arabellekte dosya değiştirme hakkında bilmiyordum . :h buffersdiyor ki: Tampon, düzenleme için belleğe yüklenmiş bir dosyadır. Bununla birlikte, sadece 3 mos için Vim'i ciddi bir şekilde kullanıyorum. ve kesinlikle düzeltmeye açıkım.
JakeD

1
@JakeD Ah evet. Haklısın. "Örnek" kelimesini yanlış yoldan aldım. Farklı PID'leri olan süreçlerden bahsettiğinizi yanlış anladım. Üzgünüm, sadece söylediklerimi unut.
ernix


6

Son zamanlarda NeoVim için elektron tabanlı bir ön uç olan OniVim adlı bir projeyi keşfettim ve kutudan çıkan birkaç dil için çok güzel bir otomatik tamamlama ile geliyor ve temelde sadece NeoVim'in etrafındaki bir sarıcı olduğundan, vim'in tüm gücüne sahipsiniz GUI ihtiyaçlarınızı karşılamıyorsa hizmetinizdedir. Hala erken gelişme aşamasında, ancak hızla gelişiyor ve çevresinde gerçekten aktif bir topluluk var. 10 yılı aşkın bir süredir vim kullanıyorum ve Oni'ye birkaç hafta önce bir test sürüşü vermeye başladım ve burada bazı hatalar olsa da yoluma çıkmadı. Vim parmaklarını hala yeni vim kullanıcılarına şiddetle tavsiye ediyorum!

resim açıklamasını buraya girin

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


32
bana vim tüm noktası terminal kullanıyor ... Eğer bir elektron uygulaması kullanmak istedim ben sadece bir vim uzantısı ile vscode kullanacağız ..
Mohamed Benkedadra

2
@MohamedBenkedadra Ama bu gerçekten size Vim'in tüm gücünü verecek mi? Bir kere arama ve değiştirme desen sisteminin büyük bir hayranı oldum ve bir vim-emülasyon eklentisi bunu desteklediğinde hoş bir sürpriz olurdu.
SilverWolf - Monica

3

Kullandığım neocomplcache yarım yaklaşık yıl için. Tüm tamponlarınızda bir kelime önbellek toplayan ve daha sonra bunları otomatik olarak tamamlamanız için sağlayan bir eklentidir.

Bir önceki bağlantıda proje sayfasında bir dizi ekran görüntüsü var. Neocomplcache ayrıca, proje sayfasında da temel örnekler olan bir ton yapılandırma seçeneğine sahiptir.

Eğer daha fazla derinlik gerekiyorsa, benim ilgili bölümünde bakabilirsiniz vimrc - sadece kelime neocomplcache arayın.


1

İşte bağlantı ! PHP için.

bazı PHP işlevlerini yazarken Ctrl + x ve ardından Ctrl + o tuşlarına basın.

Eğitim için Oseems Solutions'a teşekkürler


1

Mevcut tamponların önbellekten yalnızca istiyorum otomatik tamamlama, varsa supertab daha yüklemek kolaydır neocomplete , Mac üzerinde çalışabilir MacVim gerek kalmadan kutudan vim önceden yüklenmiş.

Vim awesome'da diğer alternatifleri de kontrol edebilirsiniz .


0

PHP için, Deoplete'li Padawan , Neovim'de sağlam bir PHP otomatik tamamlama için mükemmel çözümlerdir. Bir çok şey denedim ve Padawan bir cazibe gibi çalışıyor!

Vim için Deoplete yerine Neocomplete kullanabilirsiniz.

Birisi ilgileniyorsa nasıl Vim PHP IDE yapmak için bir makale yazdım . Tabii ki Padawan bunun bir parçası.


0

Başka bir seçenek coc.nvim .

Gerçekten hızlı ve tamamlama harika çünkü VScode ile aynı otomatik tamamlamayı intellisense kullanıyor. Ayrıca linting yeteneklerine sahiptir. Yani bir hatanız olabileceğini gösteriyor. Çok sayıda dili destekler.

Kurmak ve yapılandırmak biraz zaman alabilir, ancak orada vim için en iyi otomatik tamamlama motoru olduğunu düşünüyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.