Sử dụng Vim để phát triển Lisp


87

Tôi đã bật và tắt Lisp được một thời gian nhưng tôi bắt đầu nghiêm túc hơn với việc thực hiện một số công việc "thực sự" trong Lisp. Tôi là một người hâm mộ Vim rất lớn và đang tự hỏi làm thế nào tôi có thể làm việc hiệu quả nhất khi sử dụng Vim làm trình soạn thảo của mình để phát triển Lisp. Các plugin, đề xuất luồng công việc, v.v. đều được hoan nghênh.

Vui lòng không nói "sử dụng emacs" vì tôi đã phát triển trên Vim và tôi thực sự thích nó với tư cách là một biên tập viên.


Lisp nào, Lisp chung?
pupeno 18/09/08

Trong trường hợp này, có, Common Lisp. Tôi cũng làm một số trò đùa trong Scheme, nhưng đó là nhiều hơn đối với lập trình khám phá thông thường.
Drew Olson

Câu trả lời:


51

Limp nhằm mục đích trở thành một IDE Common Lisp đầy đủ tính năng cho Vim. Nó mặc định là SBCL, nhưng có thể được thay đổi để hỗ trợ hầu hết các triển khai khác bằng cách thay thế "sbcl" cho lisp yêu thích của bạn, trong tệp /usr/local/limp/latest/bin/lisp.sh

Khi thảo luận về Lisp ngày nay, nó thường được giả định là Common Lisp, ngôn ngữ được chuẩn hóa bởi ANSI X3J13 (xem HyperSpec , và Practical Common Lisp để biết một sách giáo khoa hay) với các triển khai như GNU Clisp, SBCL, CMUCL, AllegroCL, và nhiều khác.

Quay lại Limp. Có những giải pháp khác nhẹ nhàng hơn hoặc cố gắng làm những việc khác, nhưng tôi tin tưởng vào việc cung cấp một môi trường cung cấp cho bạn những thứ như đối sánh dấu ngoặc, đánh dấu, tra cứu tài liệu, tức là biến nó thành giải pháp chìa khóa trao tay càng nhiều càng tốt .

Trong kho lưu trữ Limp, bạn sẽ tìm thấy một số công việc trước đây của dự án SlimVim, cụ thể là giao diện ECL (Embeddable Common Lisp), được hợp nhất với các bản phát hành sau (7.1); Simon cũng đã tạo ra các bản vá cho 7.2 vẫn chưa được hợp nhất. Giao diện ECL được ghi lại trong if_ecl.txt .

Công việc ngắn hạn phải làm là hợp nhất với 7.2 và gửi bản vá cho vim_dev để hợp nhất nó vào cây Vim chính thức.

Điều này dẫn chúng ta đến các kế hoạch dài hạn: có Lisp trực tiếp trong Vim sẽ giúp thuận tiện hơn khi bắt đầu làm việc trên giao diện người dùng SWANK (phần SLIME chạy trong Lisp của bạn, với slime.el là phần chạy trong biên tập viên - giao diện người dùng).

Và ở đâu đó, có khả năng tất cả Limp sẽ được viết lại trong Common Lisp bằng giao diện ECL, giúp Limp dễ bảo trì hơn (VimScript không phải là yêu thích của tôi) và người dùng dễ dàng tùy chỉnh hơn.

Các trang web chính thức Limp đi xuống bất cứ lúc nào, nhưng khi ra nhọn, các tải về tại Vim.org nên luôn luôn làm việc, và các nhóm hỗ trợ khập khiễng-develkhập khiễng của người dùng được lưu trữ với Google Groups. Đừng ngần ngại tham gia nếu bạn cảm thấy mình cần một câu hỏi được trả lời, hoặc thậm chí có thể muốn tham gia phát triển. Hầu hết các cuộc thảo luận diễn ra trên danh sách limp-devel. Nếu bạn tham gia IRC, tôi đang #limp trên irc.freenode.net với tên 'tic'.

Chúc may mắn!


3
Tình trạng của công việc này là gì? Bạn vẫn muốn làm việc với nó?
Erik Garrison

4
Tôi bối rối. "Câu trả lời" có vẻ giống như một gợi ý về một vài tùy chọn, chẳng hạn như sử dụng Limp, nhưng hoàn toàn không giải thích cách thực hiện điều này. Tôi nghĩ câu hỏi là, làm thế nào để tôi sử dụng Vim với SBCL / bất cứ điều gì. Điều này không thực sự trả lời câu hỏi, vì vậy tôi hơi bối rối bởi tất cả các phiếu ủng hộ. Bạn có vui lòng đi vào chi tiết một chút về cách thực sự thiết lập môi trường này và bắt đầu không?
jpswain

Có vẻ như Limp không còn được duy trì nữa: trang web ngừng hoạt động và lần thay đổi cuối cùng là vào năm 2008.
kynan

Theo ghi nhận của những người khác, hầu hết các liên kết ở trên (và trên trang lấp lửng trên vim.org) đã bị hỏng từ lâu. Tuy nhiên bạn có thể tìm thấy gần như tất cả mọi thứ (các tập tin .vim và các tài liệu liên quan) tại github.com/mikaelj/limp
George Hawkins

28

Bạn có thể cho slimv nghỉ ngơi.


+1 Chỉ mới bắt đầu với slimv nên hầu như không có kiến ​​thức về nó nhưng nó có vẻ hoạt động hoàn hảo ngay khi xuất xưởng như một sự thay thế thực sự cho slime cho emacs. Ngoài ra nó có phiên bản gần đây (v0.9.2 07-Nov-2011) trong khi khập khiễng không có thông tin cập nhật từ năm 2008.
JMSU

2
Đã sử dụng slimv trong một thời gian; nó là tuyệt vời. Không có gì khác so sánh trong không gian.
tempire

18

Đây là một sơ đồ thú vị của Xach tóm tắt tình hình hiện tại.

sơ đồ giải thích rằng gần như không có người dùng VIM nào cũng là lập trình viên Lisp và cũng có thể hack nó để biến nó thành Lisp IDE tốt ... văn bản thay thế tệ hại :)


61
Điều đó thật ngớ ngẩn. Bạn không cần C để tùy chỉnh Vim. Vim có thể viết script bằng ngôn ngữ riêng của nó và hầu hết các bản dựng đều hỗ trợ script Ruby và Python.
Sam Stokes

6
Vì vậy, người dùng VIM muốn sử dụng VIM cho Common Lisp là cốt lõi của tất cả người dùng VIM ?? Có lẽ tôi đang thiếu một cái gì đó ở đây ...
Will Hartung.

@Luis: Trên thực tế, thực tế là chấm màu xanh lam nằm ở trung tâm khiến cho màu xanh lá cây không thể giao với nó. Tôi có thể nói rằng tác giả của sơ đồ đang thiếu cách hoạt động của hình học.
trực giác

9
Màu xanh lá cây và màu xanh lam được cho là giao nhau.
Luís Oliveira


7

SLIME for EMACS là một công cụ tuyệt vời để lập trình LISP. Phần tốt nhất là gửi mã được viết trong trình soạn thảo của bạn thẳng đến phiên LISP trực tiếp. Bạn có thể nhận được hành vi tương tự từ Vim bằng cách sử dụng các mẹo tại đây:

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

Tôi đã điều chỉnh tập lệnh của riêng mình để có thể gửi đến phiên SBCL hoặc Clojure . Nó làm cho bạn hiệu quả hơn nhiều và tận dụng REPL.

": set lisp" bắt đầu chế độ thụt lề cho Vim. Nhưng nó sẽ không hoạt động với một số phương ngữ như Clojure. Đối với Clojure, hãy sử dụng VimClojure .

Một số người cũng thích LIMP .


7

Ở đây 9 năm sau, và bây giờ chúng ta có Vim 8 và Neovim, cả hai đều cung cấp khả năng tương tác không đồng bộ với các plugin.

vlime là một plugin tuyệt vời, giàu tính năng, tận dụng giao diện không đồng bộ mới để cung cấp môi trường phát triển giống SLIME cho Common Lisp.


6
  • Tiện ích bổ sung Vim: Dấu ngoặc đơn cầu vồng, cú pháp Lisp
  • SBCL add-on: rlwrap, sb-aclrepl
  • Quy trình làm việc: Ion3 (hoặc một số WM lát gạch khác) với nhiều cửa sổ đầu cuối.

    • Chỉnh sửa Lisp trong Vim
    • Chuyển sang cửa sổ Lisp (tất nhiên là sử dụng bàn phím)
    • Sử dụng Cr để gọi lại dòng tải lại hệ thống ASDF được đề cập để các thay đổi của bạn có hiệu lực.
    • Sử dụng sao chép / dán X Window cho các đoạn trích / thay đổi nhỏ.
    • Sử dụng DESCRIBE, TRACE và APROPOS nhiều.
    • Nói lại.

5

: đặt ngọng

Vim có một chế độ giúp bạn thụt lề mã theo tiêu chuẩn Lisp.

Ngoài ra, tôi sửa đổi lispwords để thay đổi cách vim thụt lề mã của tôi.

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


1
thụt lề rất dễ dàng. Cung cấp một IDE tốt quan trọng hơn nhiều. Trên thực tế VIM thậm chí sẽ không làm điều đó (thụt lề) tốt như Emacs / SLIME làm.
Luís Oliveira

3

Bạn có thể thử Emacs với Vim giả lập, không phải là hoàn hảo, nhưng nó có thể hơi quen thuộc. Tôi nghĩ Lisp sẽ tỏa sáng nếu bạn sử dụng thứ gì đó như Slime hoặc DrScheme thực hiện phát triển lặp đi lặp lại, tất cả các trình soạn thảo khác đều cảm thấy sai.


2

Tôi biết bạn đã nói không bảo bạn sử dụng Emacs.

Sử dụng Emacs.

Nghiêm trọng, chất nhờn thiết lập cho Emacs là khá nhiều các nền tảng phát triển tiêu chuẩn cho Lisp, và vì lý do rất tốt.


5
Tôi vẫn đứng trước câu trả lời này, mặc dù mọi người vẫn đang bỏ phiếu cho nó kể từ tháng 4 năm 2011. Tôi thích Vim và sử dụng nó hàng ngày, nhưng không có gì giống như lập trình Lisp trong một môi trường được viết bằng Lisp. "Tôi ước tôi có thể làm cho người biên tập phản ứng với những gì đang xảy ra trong máy chủ Lisp của tôi. Ồ, chờ đã! Tôi có thể!" là một cảm giác tuyệt vời. Một lần nữa: Tôi thích Vim, nhưng ý kiến ​​của tôi là Emacs là một trình soạn thảo tốt hơn nhiều khi làm việc với Lisp .
Kirk Strauser

Tiếp theo: 6 năm sau và tất cả các bạn vẫn đang bỏ phiếu cho câu trả lời gần một thập kỷ này? OK, chúng tôi hiểu nó, chúng tôi hiểu nó! 😀 Tôi vẫn không thay đổi nó.
Kirk Strauser,

2

Dường như đã có những nỗ lực nhằm tích hợp Lisp giống SLIME trong Vim, nhưng chưa có nỗ lực nào thực sự đi xa đến mức cần thiết để thực sự hữu ích. Tôi nghĩ rằng việc tích hợp của ECL đã được thực hiện, nhưng không được cam kết ngược dòng.

Bạn sẽ tìm thấy tất cả các liên kết có liên quan từ trang của Cliki về Vim .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.