2011-03-21 29 views
5

Yakın bir zamanda lisp'i kullanmaya başladım ve esas olarak clisp ve vim kullanarak bin kullanmaya başladım. Ben de sbcl denemek istedim, çünkü bu genellikle en iyi, özgür lisp derleyicilerinden biri olarak tavsiye edilir. Yine de, sbcl'yi benim için kullanmak daha da zorlaştıran bir şey var: Ben, REPL içinde otomatik tamamlama yapamıyorum. Ben SBCL başlayıp (örnek olarak) Aşağıdaki yazarken deyişle,sbcl'de otomatik tamamlamayı etkinleştirme

<tab> değişmez sekme karakteridir
* (requi<tab> 

, ben tamamlamalarının listesini almak değil, bir ayrıntılı sekme karakteri kalmamasıdır. Clisp'de, <tab>, önceki satırı * (require olarak tamamlayacaktır.

Lisp için oldukça yeni olduğum için, clisp'deki otomatik tamamlama işlevi gerçekten kullanışlıdır, bu yüzden herkesin de sbcl'ye nasıl ulaşacağını açıklayabilmesi gerçekten çok uygun olacaktır.

cevap

6

SBCL'de otomatik tamamlama yanıtı elde etmenin bir yolu, http://common-lisp.net/project/linedit/'dan linedit kullanmaktır. İkincisi, uygun bir tamamlama dosyası ile bir wlwrap, bir readline sarıcı kullanmaktır. (Sanırım bunların hiçbiri, emacs olarak kullanılmadığı gibi, elbette bir dizi başka kullanışlı özellik ile tamamlayıcı bir REPL de sağlar.)

+0

Teşekkürler! linedit çok iyi çalışıyor gibi görünüyor! –

+0

rlwrap benim için çalışıyor –

4

SBCL'de otomatik tamamlayıcı bir REPL almanın bir yolunu bilmiyorum, ancak SLIME içindeki lisp ortamımla ara yüz oluşturma işleminin oldukça kullanışlı olduğunu ve bu noktada Cc Ci'yi otomatik olarak kullanabilirsiniz. tamamlanması.

+1

Bu konuda SBCL el kitabında hiçbir şey bulamıyorum, bu yüzden yerleşik bir tamamlama desteği olmadığını varsayalım. SLIME kullanmayla ilgili tavsiyem sadece ikinci olabilir, hatta seçim için birden fazla tamamlama sistemi vardır. Özellikle bulanık tamamlama harika. Ayrıca SLIME REPL içinde 'ile de tamamlayabilirsiniz. (En azından benim için çalışıyor ve bunu başarmak için hiçbir şeyi yapılandırmam gerekmiyordu.) DÜZENLEME: Sadece C-c C-i'nin repatch olmayan SLIME arabelleklerinde doğru tamamlama anahtarı olduğunu görüyorum. Bu benim için yeni, eskiden M-C-i. –

+0

Eh, bir sorun, ben değil, emacs vim kullanıyorum. Takas etmeye çalıştım, ama vipermode (veya benzeri) ile emacs ayarlamak ve benim için çalışmasını sağlamak için benim beğenisine ayarlamak için biraz fazla iş var. Böylece, en azından şimdilik, slime bir seçenek değildir. Vim için balçık esinli bir eklenti kullanıyorum, ama neredeyse güçlü değil. Her neyse, bu yüzden SBCL'nin standart REPL'si için tamamlamayı düşünüyorum. Her neyse, cevap için teşekkürler. Emacs'de yeni bir deneme yapmak için bana biraz daha ilham veriyor. –

0

Eğer sbcl, emacs ve slime kullanmak isterseniz, Bu Modern Common Lisp on Linux öğreticiyi izleyin. Eğitmen, quicklisp ve özellikle (ql:quickload "quicklisp-slime-helper"), slime otomatik tamamlama ve daha fazlasını yapmak için bir elispscript yükleme bahseder.

İlgili konular