ใช้ Vim สำหรับการพัฒนา Lisp


88

ฉันใช้ Lisp อยู่ตลอดเวลา แต่เริ่มจริงจังกับการทำงาน "ของจริง" ใน Lisp มากขึ้น ฉันเป็นแฟนตัวยงของ Vim และสงสัยว่าฉันจะทำงานได้ดีที่สุดโดยใช้ Vim เป็นบรรณาธิการสำหรับการพัฒนา Lisp ยินดีต้อนรับปลั๊กอินคำแนะนำขั้นตอนการทำงาน ฯลฯ

โปรดอย่าพูดว่า "ใช้ emacs" เพราะฉันได้ใช้ Vim ไปแล้วและฉันก็สนุกกับการเป็นบรรณาธิการ


Lisp ใด Common Lisp?
pupeno

ในกรณีนี้ใช่ Common Lisp ฉันเล่นไปรอบ ๆ ใน Scheme เช่นกัน แต่นั่นมากกว่าสำหรับการเขียนโปรแกรมเชิงสำรวจแบบสบาย ๆ
Drew Olson

โปรดดูLisp in Vim ด้วย Slimv หรือ Vlimeที่ฉันได้ให้รายละเอียดเกี่ยวกับการเขียนโปรแกรม Common Lisp ใน Vim กับ Slimv หรือ Vlime ซึ่งเป็นปลั๊กอินยอดนิยมสองตัวสำหรับ Vim ที่ให้สภาพแวดล้อมการเขียนโปรแกรมแบบโต้ตอบ SLIME สำหรับ Common Lisp
Susam Pal

คำตอบ:


51

Limp ตั้งเป้าที่จะเป็น Common Lisp IDE ที่มีคุณสมบัติครบถ้วนสำหรับ Vim ค่าเริ่มต้นเป็น SBCL แต่สามารถเปลี่ยนเพื่อรองรับการใช้งานอื่น ๆ ส่วนใหญ่ได้โดยแทนที่ "sbcl" สำหรับเสียงกระเพื่อมที่คุณชื่นชอบในไฟล์ /usr/local/limp/latest/bin/lisp.sh

เมื่อพูดถึง Lisp ในปัจจุบันมักจะถือว่าเป็น Common Lisp ภาษาที่เป็นมาตรฐานโดย ANSI X3J13 (ดูHyperSpecและPractical Common Lispสำหรับหนังสือเรียนที่ดี) พร้อมการใช้งานเช่น GNU Clisp, SBCL, CMUCL, AllegroCL และอีกมากมาย อื่น ๆ

กลับไปที่ Limp มีโซลูชันอื่นที่มีน้ำหนักเบากว่าหรือพยายามทำสิ่งอื่น ๆ แต่ฉันเชื่อในการจัดเตรียมสภาพแวดล้อมที่ให้สิ่งต่างๆแก่คุณเช่นการจับคู่วงเล็บการไฮไลต์การค้นหาเอกสารเช่นการทำให้เป็นโซลูชันแบบเทิร์นคีย์ให้มากที่สุด .

ในที่เก็บ Limpคุณจะพบผลงานบางส่วนของโครงการ SlimVim ก่อนหน้านี้คืออินเทอร์เฟซ ECL (Embeddable Common Lisp) ซึ่งรวมเข้ากับการเผยแพร่ในภายหลัง (7.1) Simon ยังได้สร้างแพตช์ถึง 7.2 ที่พร้อมใช้งานแล้ว อินเตอร์เฟซ ECL การบันทึกไว้ในif_ecl.txt

งานระยะสั้นคือการรวมกับ 7.2 และส่งแพทช์ไปที่ vim_dev เพื่อรวมเข้ากับ Vim tree อย่างเป็นทางการ

ซึ่งนำเราไปสู่แผนระยะยาว: การมี Lisp โดยตรงใน Vim จะทำให้สะดวกในการเริ่มทำงานกับ SWANK front-end (ส่วนของ SLIME ที่ทำงานใน Lisp ของคุณโดย slime.el เป็นส่วนที่ทำงานใน บรรณาธิการ - ส่วนหน้า)

และในระหว่างนั้นมีแนวโน้มว่า Limp ทั้งหมดจะถูกเขียนใหม่ใน Common Lisp โดยใช้อินเทอร์เฟซ ECL ทำให้ Limp ดูแลรักษาง่ายขึ้น (VimScript ไม่ใช่รายการโปรดของฉัน) และผู้ใช้ปรับแต่งได้ง่ายขึ้น

เว็บไซต์อย่างเป็นทางการเหี่ยวลงไปเป็นครั้งคราว แต่เป็นออกแหลมที่ดาวน์โหลดได้ที่ Vim.orgควรทำงานเสมอและกลุ่มสนับสนุนปวกเปียก-develและปวกเปียกผู้ใช้จะเป็นเจ้าภาพกับ Google Groups อย่าลังเลที่จะเข้าร่วมหากคุณรู้สึกว่าต้องการคำตอบสำหรับคำถามหรืออาจต้องการเข้าร่วมในการพัฒนา การอภิปรายส่วนใหญ่เกิดขึ้นในรายการปวกเปียก หากคุณอยู่ใน IRC ฉันอยู่ใน #limp บน irc.freenode.net เป็น 'tic'

โชคดี!


3
งานนี้สถานะเป็นอย่างไร? คุณยังสนใจที่จะทำงานกับมันหรือไม่?
Erik Garrison

4
ฉันสับสน. "คำตอบ" ดูเหมือนเป็นข้อเสนอแนะของตัวเลือกบางอย่างเช่นการใช้ Limp แต่ไม่ได้อธิบายวิธีการทำสิ่งนี้ให้สำเร็จ ฉันคิดว่าคำถามคือฉันจะใช้ Vim กับ SBCL / อะไรก็ได้ นี่ไม่ได้ตอบคำถามจริงๆดังนั้นฉันจึงสับสนกับการโหวตทั้งหมด คุณช่วยพิจารณารายละเอียดเล็กน้อยเกี่ยวกับวิธีการตั้งค่าสภาพแวดล้อมนี้และเริ่มต้นใช้งานจริงหรือไม่
jpswain

ดูเหมือนว่า Limp จะไม่ได้รับการดูแลอีกต่อไป: ไซต์หยุดทำงานและการเปลี่ยนแปลงครั้งล่าสุดคือในปี 2008
kynan

ตามที่ระบุไว้โดยผู้อื่นลิงก์ส่วนใหญ่ด้านบน (และบนหน้าปวกเปียกบน vim.org) จะใช้งานไม่ได้นาน อย่างไรก็ตามคุณสามารถค้นหาเกือบทุกอย่าง (ไฟล์. vim และเอกสารที่เกี่ยวข้อง) ได้ที่github.com/mikaelj/limp
George Hawkins

28

คุณอาจให้slimvหยุดพัก


+1 เพิ่งเริ่มต้นด้วย slimv จึงแทบไม่มีความรู้เกี่ยวกับเรื่องนี้ แต่ดูเหมือนว่าจะทำงานได้ดีอย่างสมบูรณ์แบบนอกกรอบเป็นทางเลือกที่แท้จริงสำหรับสไลม์สำหรับ emacs นอกจากนี้ยังมีรุ่นล่าสุด (v0.9.2 07-nov-2011) ในขณะที่ limp ไม่มีการอัปเดตตั้งแต่ปี 2008
jmsu

2
ใช้ slimv มาระยะหนึ่งแล้ว; มันยอดเยี่ยมมาก ไม่มีสิ่งอื่นใดที่จะเปรียบเทียบได้ในพื้นที่
ชั่วคราว

18

นี่คือแผนภาพที่น่าสนใจโดยXachที่สรุปสถานการณ์ปัจจุบัน

แผนภาพอธิบายว่าแทบไม่มีผู้ใช้ VIM ที่เป็นโปรแกรมเมอร์ Lisp และยังสามารถแฮ็กเพื่อให้เป็น Lisp IDE ที่ดี ... ข้อความแสดงแทนที่มีหมัด :)


61
ที่โง่ คุณไม่จำเป็นต้องใช้ C เพื่อปรับแต่ง Vim Vim สามารถเขียนสคริปต์ได้นอกกรอบในภาษาของตัวเองและบิวด์ส่วนใหญ่รองรับการเขียนสคริปต์ Ruby และ Python ด้วย
Sam Stokes

6
ดังนั้นผู้ใช้ VIM ที่ต้องการใช้ VIM สำหรับ Common Lisp จึงเป็นแกนหลักของผู้ใช้ VIM ทั้งหมด ?? บางทีฉันอาจจะพลาดอะไรบางอย่างที่นี่ ...
Will Hartung

@ หลุยส์: ที่จริงแล้วจุดสีน้ำเงินอยู่ตรงกลางทำให้จุดสีเขียวไม่ตัดกับจุดนั้นไม่ได้ ฉันอยากจะบอกว่าผู้เขียนแผนภาพนั้นขาดวิธีการทำงานของเรขาคณิต
ปรีชา

9
สีเขียวและสีน้ำเงินควรจะตัดกัน
Luís Oliveira


7

SLIME สำหรับ EMACS เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการเขียนโปรแกรม LISP ส่วนที่ดีที่สุดคือการส่งโค้ดที่เขียนในโปรแกรมแก้ไขของคุณไปยังเซสชัน LISP สด คุณสามารถรับพฤติกรรมที่คล้ายกันได้จาก Vim โดยใช้เคล็ดลับที่นี่:

http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/

ฉันปรับสคริปต์ของตัวเองเพื่อให้สามารถส่งไปยังเซสชันSBCLหรือClojureได้ ทำให้คุณมีประสิทธิผลมากขึ้นและใช้ประโยชน์จาก REPL

": set lisp" เริ่มโหมดการเยื้องกระเพื่อมสำหรับ Vim แต่จะใช้ไม่ได้กับบางภาษาเช่น Clojure สำหรับ Clojure ใช้VimClojure

บางคนชอบLIMPด้วย


7

นี่คือ 9 ปีต่อมาและตอนนี้เรามี Vim 8 และ Neovim ซึ่งทั้งคู่มีความสามารถในการโต้ตอบกับปลั๊กอินแบบอะซิงโครนัส

vlimeเป็นปลั๊กอินที่ยอดเยี่ยมและมีคุณสมบัติครบถ้วนซึ่งใช้ประโยชน์จากอินเทอร์เฟซ async ใหม่เพื่อจัดเตรียมสภาพแวดล้อมการพัฒนาที่เหมือน SLIME สำหรับ Common Lisp


6
  • ส่วนเสริมของกลุ่ม: วงเล็บสายรุ้ง, ไวยากรณ์ของ Lisp
  • ส่วนเสริม SBCL: rlwrap, sb-aclrepl
  • เวิร์กโฟลว์: Ion3 (หรือ WM แบบกระเบื้องอื่น ๆ ) พร้อมหน้าต่างเทอร์มินัลหลายเครื่อง

    • แก้ไขเสียงกระเพื่อมเป็นกลุ่ม
    • เปลี่ยนเป็นหน้าต่าง Lisp (โดยใช้แป้นพิมพ์แน่นอน)
    • ใช้ Cr เพื่อเรียกคืนบรรทัดเพื่อโหลดระบบ ASDF ที่เป็นปัญหาซ้ำเพื่อให้การเปลี่ยนแปลงของคุณทำงานได้
    • ใช้ X Window คัดลอก / วางสำหรับตัวอย่าง / การเปลี่ยนแปลงขนาดเล็ก
    • ใช้ DESCRIBE, TRACE และ APROPOS อย่างมาก
    • ทำซ้ำ

5

: ตั้งเสียงกระเพื่อม

Vim มีโหมดที่จะช่วยให้คุณเยื้องรหัสของคุณตามมาตรฐาน Lisp

นอกจากนี้ฉันยังปรับเปลี่ยน lispwords เพื่อเปลี่ยนวิธีการเยื้องรหัสของกลุ่ม

: setl lw- = if (ใน ~ / .vim / ftplugin / lisp.vim)


1
การเยื้องเป็นเรื่องง่าย การจัดหา IDE ที่ดีนั้นสำคัญกว่ามาก จริงๆแล้ว VIM จะไม่ทำเช่นนั้น (การเยื้อง) เช่นเดียวกับ Emacs / SLIME
Luís Oliveira

3

คุณสามารถลองใช้ Emacs กับ Vim emulation ได้ซึ่งอาจไม่สมบูรณ์แบบ แต่อาจจะคุ้นเคยอยู่บ้าง ฉันคิดว่า Lisp ส่องประกายถ้าคุณใช้บางอย่างเช่น Slime หรือ DrScheme ในการพัฒนาซ้ำ ๆ ผู้แก้ไขคนอื่น ๆ ทั้งหมดรู้สึกผิด


2

ดูเหมือนจะมีความพยายามที่จะมีการรวม Lisp ใน Vim แบบ SLIME แต่ก็ไม่มีอะไรไปไกลเท่าที่จำเป็นเพื่อให้เป็นประโยชน์จริงๆ ฉันคิดว่าการบูรณาการของ ECL ได้ดำเนินการแล้ว แต่ไม่ได้เกิดขึ้นตั้งแต่ต้นน้ำ

คุณควรจะพบการเชื่อมโยงที่เกี่ยวข้องทั้งหมดจากหน้า Cliki เกี่ยวกับกลุ่ม


1

ฉันรู้ว่าคุณบอกว่าอย่าบอกให้คุณใช้ Emacs

ใช้ Emacs

จริงจังการตั้งค่าSLIMEสำหรับ Emacs นั้นค่อนข้างเป็นแพลตฟอร์มการพัฒนามาตรฐานสำหรับ Lisp และด้วยเหตุผลที่ดีมาก


5
ฉันยังคงยืนหยัดตามคำตอบนี้แม้ว่าผู้คนจะยังคงลงคะแนนเมื่อเดือนเมษายน 2011 ฉันชอบ Vim และใช้มันทุกวัน แต่ไม่มีอะไรเหมือนกับการเขียนโปรแกรม Lisp ในสภาพแวดล้อมที่เขียนด้วย Lisp "ฉันหวังว่าฉันจะทำให้บรรณาธิการตอบสนองต่อสิ่งที่เกิดขึ้นในเซิร์ฟเวอร์ Lisp ของฉันโอ้เดี๋ยวก่อนฉันทำได้!" เป็นความรู้สึกที่ยอดเยี่ยม อีกครั้ง: ฉันเหมือนเป็นกลุ่ม แต่ความเห็นของผมก็คือว่า Emacs เป็นบรรณาธิการที่ดีมากสำหรับการทำงานกับเสียงกระเพื่อม
Kirk Strauser

การติดตามผล: 6 ปีต่อมาและคุณยังคงโหวตคำตอบที่มีอายุเกือบทศวรรษนี้อยู่หรือไม่? ตกลงเราเข้าใจเราเข้าใจแล้ว! 😀ฉันยังคงไม่เปลี่ยนมัน
Kirk Strauser
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.