Làm thế nào tôi có thể bắt đầu học Emacs Lisp?


39

Lý lịch:

Tôi chủ yếu là người dùng vi và đang chuyển đổi sang Emacs.

Trước những điều cơ bản và bây giờ sử dụng nó để viết mã bằng C và một số Python có kế hoạch thực hiện chuyển đổi R.

Tôi đã viết (Chung) LISP trong nhiều năm hơn hai thập kỷ trước khi tôi còn đi học nhưng bây giờ tôi đã bị mất hiệu lực (có thể viết lời chào thế giới nhưng đó là nó).

Câu hỏi:

Bạn muốn giới thiệu gì cho một anh chàng ở vị trí của tôi để học môi trường LISP của Emacs và bắt đầu hack Emacs.

Có sách, blog, tài nguyên tôi nên đọc, bài tập tôi nên làm không?

Câu trả lời:


11

Theo kinh nghiệm của tôi, hướng dẫn đi kèm về Emacs Lisp không quá hữu ích (tôi đã thử hai lần trong nhiều năm và đều thất bại). Thay vào đó, cuối cùng tôi đã sử dụng Tài liệu tham khảo Emacs Lisp đi kèm.

Điều cuối cùng đã làm:

Nhận ra rằng có hai khía cạnh đối với Emacs Lisp: Bản thân ngôn ngữ cơ bản và sự tương tác với Emacs. Tách hai điều này trong tâm trí của bạn. Tập trung đầu tiên vào cái trước (không nên quá khó như bạn đã học Lisp trong quá khứ). Sử dụng các trang web như Excercism để thực hành.

Khi bạn đã nắm được những điều cơ bản (vòng lặp, hàm, biến, điều kiện, v.v.), hãy chuyển sang các khía cạnh liên quan đến chính Emacs (thay đổi văn bản, chuyển đổi bộ đệm, v.v.). Điều này là rất lớn, và bạn có thể sẽ bị lạc trong một biển chi tiết. Có một vài điều bạn nên hiểu thực sự tốt, vì bạn sẽ sử dụng chúng thường xuyên. Họ đang:

  • tương tác
  • tiết kiệm
  • hạn chế tiết kiệm
  • móc
  • chức năng tư vấn
  • với bộ đệm hiện tại

Khi bạn hiểu những điều này, thay vì dành toàn bộ thời gian để đọc tài liệu tham khảo ELisp, hãy nghĩ đến những vấn đề đơn giản bạn gặp phải với Emacs mà bạn muốn viết và thử giải quyết chúng bằng Elisp. Bạn có thể sẽ cần trợ giúp về một số bước và đó là nơi Google có thể giúp bạn.

Ví dụ về các vấn đề tôi đã giải quyết để thực hành Elisp của mình:

  • Khi bạn sử dụng org-Capture và bạn viết văn bản ở dòng cuối cùng của bộ đệm chụp, nó sẽ không đặt dòng mới ở cuối và vì vậy nếu tôi có bất kỳ tiêu đề nào sau vị trí chụp, thì tiêu đề đó sẽ không còn là tiêu đề nữa . Cách khắc phục là tạo một cái móc kiểm tra xem có bất kỳ dòng mới nào không, và nếu không, hãy thêm một cái ở cuối bản chụp.

  • Khi tôi chụp và lọc lại trong một bước, nó sẽ không lưu tệp mà mục nhập đã được tinh chỉnh. Nhưng nếu tôi chụp mà không cần lọc lại, thì có. Tôi đã sửa lỗi không thống nhất này.

  • Khi viết vài phút trong cuộc họp (trong tệp org), nếu TODO cho ai đó xuất hiện, tôi muốn thực hiện một bản chụp sẽ tìm tiêu đề có tên TODOs (dưới tiêu đề cấp cao nhất tôi đang ở) và đặt TODO vào ở đó Mỗi cuộc họp có tiêu đề TODO riêng và cuộc họp sẽ diễn ra cuộc họp hiện tại trong tệp. Điều này liên quan đến việc viết một chức năng đi lên cây lên cấp cao nhất và tìm kiếm một đứa trẻ được gọi là TODOs.

  • Giết tất cả các bộ đệm của một chế độ nhất định (có thể có một chức năng nội bộ đã thực hiện điều này, nhưng tôi không biết nó).

Cuối cùng, hãy chắc chắn rằng bạn biết các phím bấm sau:

  • Cx Ce (biểu thức đánh giá)
  • Ch v (tra cứu ý nghĩa và giá trị của một biến)
  • Ch f (tra cứu mô tả chức năng sẵn có).

33

Thật là một câu hỏi tuyệt vời! Đây là con đường tôi đã đi:

Bước 0: Đọc Hướng dẫn về Emacs

Đọc Hướng dẫn Emacs trước bất cứ điều gì khác. Có vẻ như bạn đã làm điều này. Tốt về bạn Tuy nhiên, đối với bất kỳ ai đến với điều này sau đó, đây là nơi để bắt đầu hành trình Emacs của bạn. Có rất nhiều bài viết sai lệch trên blog. Họ quá phức tạp mọi thứ. Emacs làm cho nó dễ dàng:

  1. Bắt đầu Emacs
  2. nhấn <RET>

Bạn cũng có thể truy cập nó thông qua Ctrl + h t, hoặc C-h ttrong ký hiệu Emacs.

Hướng dẫn giới thiệu các khái niệm cơ bản của Emacs, làm rõ thuật ngữ lịch sử và giúp bạn đi vào dưới 30 phút. Nó cũng đặt sân khấu cho bước tiếp theo.

Mở Emacs.  Nhấn nút Enter.  Nó là dễ dàng!

Bước 1: Đọc "Giới thiệu về lập trình trong Emacs Lisp"

Bước tiếp theo là đọc phần Giới thiệu về lập trình trong Emacs Lisp . Tôi không thể khuyên bạn nên cuốn sách này đủ; nó được viết rất tốt Nó đi kèm với hầu hết các cài đặt Emacs 1 . Đơn giản chỉ cần nhấn C-h ivà chọn nó từ menu. Bạn cũng có thể đi đến nó trực tiếp thông qua C-h i m Emacs Lisp Intro.

Các lời nói đầu,

Văn bản này được viết như một giới thiệu cơ bản cho những người không phải là lập trình viên.

Nó nên nói "cho những người không phải là lập trình viên Lisp." Lisp hơi khác so với các ngôn ngữ khác, vì vậy, nó đáng để đọc nếu bạn không quen với Lisp. Tác giả có một phong cách dễ tiếp cận và đi qua nhiều ví dụ. Tôi mất khoảng một tuần để hoàn thành.

Bước 1.5: Mẹo phát triển Lisp của Emacs với John Wiegley

Tính đến cuối năm 2015, John là người duy trì dự án Emacs . Sacha Chua thực hiện một cuộc phỏng vấn tuyệt vời với anh ta ở đây, trong đó John đi qua những điều cơ bản của Emacs Lisp, môi trường phát triển và cung cấp rất nhiều lời khuyên tuyệt vời.

Bước 2: Đọc OPC (Mã nhân dân khác)

2a. Đọc mã nguồn

Bởi vì Emacs là "trình soạn thảo hiển thị thời gian thực có thể mở rộng, có thể tùy chỉnh, tự tạo tài liệu", nên tất cả các mã nguồn đều được bao gồm. Tìm hiểu để sử dụng các tính năng trợ giúp, C-h fcho một chức năng và C-h vcho một biến. Luôn có một liên kết đến mã nguồn:

Nhấp vào liên kết mã nguồn để xem mã nguồn!

2b. Đọc tất cả các init.el's

Rất nhiều người theo dõi các init.eltập tin của họ trong Git hoặc Mercurial. Tìm kiếm chúng ra. Một mẹo nhỏ là nhấp vào hồ sơ của mọi người trên StackOverflow, đặc biệt là emacs.stackexchange.com :

Dude là một người sử dụng quyền lực!

Họ thường có liên kết đến GitHub hoặc trang web cá nhân của họ:

Trả tiền bẩn!

Repos được gọi dotemacshoặc dotfileslà khá phổ biến. Theo thời gian, bạn sẽ có cảm giác về mã tốt trông như thế nào và mã xấu trông như thế nào. Bạn cũng sẽ học được những tên tuổi lớn, như những người của Xah , Sasha Chua , binchen , Magnar Sveen , abo-abo , và nhiều hơn nữa. Có rất nhiều người để học hỏi!

Bước 3: Hack trên Emacs

Thử thách bản thân để viết các chức năng bạn muốn. Không bao giờ sao chép mã một cách mù quáng; luôn luôn dành thời gian để hiểu nó Nếu bạn không hiểu nó, đừng sử dụng nó! Khi bạn dành thời gian để hiểu một đoạn mã, ngoài việc học một cái gì đó mới, bạn thường nghĩ cách cải thiện nó cho trường hợp sử dụng cụ thể của bạn. Đây là một cơ hội để hack! Rốt cuộc, đó là những gì bạn init.ellàm! Phạm sai lầm, phá vỡ mọi thứ, học cách gỡ lỗi. Bạn sẽ thấy rằng vì Emacs được viết bằng Elisp, phát triển là một niềm vui.

Bước 4: Đặt câu hỏi trên emacs.stackexchange.com

Tôi đã thấy rằng cộng đồng Emacs trên StackExchange yêu thích một câu hỏi Elisp hay. Vì vậy, hãy tự tin rằng những người khác sẽ đánh giá cao nỗ lực học hỏi của bạn.

Bước 5: Trả lời câu hỏi trên emacs.stackexchange.com

Không có gì làm rõ sự hiểu biết của bạn như cố gắng giải thích một cái gì đó. Truy cập trang chính, bạn cũng sẽ tìm thấy câu trả lời cho những câu hỏi mà bạn chưa từng biết.

Phần kết luận

Theo thời gian, bạn sẽ thấy mình có thể tạo ra giải pháp nhanh hơn và trả lời câu hỏi của người khác. Giống như tất cả các chương trình, nó có thể được bực bội. Tuy nhiên, hãy nhớ đánh giá bản thân hôm nay chống lại chính mình ngày hôm qua. Một số người đã hack Emacs trong 30 năm theo nghĩa đen! Tuy nhiên, hầu hết thời gian, bạn sẽ thấy rằng Emacs là một niềm vui để làm việc và sự tự do mà nó mang lại cho bạn là cảm hứng.

Chúc mừng hack! :)

PS: Kiểm tra gói ác .


1 Một số cài đặt không đi kèm với nó. Ví dụ, người dùng Debian phải cài đặt riêng. Điều đó thật ngớ ngẩn , nhưng nó được lưu trữ trong các repos không miễn phí . Thêm một repo không miễn phí vào /etc/apt/sources.listbằng cách thêm non-freevào cuối mỗi mục:

deb http://http.us.debian.org/debian stable main contrib non-free

1
cảm giác như tôi vừa ghé thăm quora
user3496846

10

Tôi đề nghị "Giới thiệu Lisp Emacs".

"Giới thiệu Lisp Emacs" có thể đã có sẵn ở định dạng thông tin trong Emacs của bạn. Hãy thử C-h i m Emacs Lisp Intro REThoặc đánh giá (info "(eintr) Top")trong Emacs.

Nếu điều này không tìm kiếm trên web cho "Emacs Lisp Intro".


7
  1. Bắt đầu với trang Wiki Emacs Tìm hiểu Emacs Lisp .

    Không phải trang đó sẽ dạy bạn Emacs Lisp. Thay vào đó, nó sẽ chỉ đến các tài nguyên học tập - chính xác là những gì bạn đang tìm kiếm ở đây , với câu hỏi của bạn. Nhiều người dùng đã đóng góp cho nó và chỉnh sửa nó trong một khoảng thời gian nhiều năm. Điều đó thể hiện những ưu điểm cũng như nhược điểm khi viết blog của một người dùng. Chất lượng của các đề xuất tất nhiên là khác nhau, vì sự đa dạng của đầu vào.

  2. Ngoài ra - mọi thứ mà những người khác ở đây đã nói, đặc biệt là bắt đầu với tài liệu tích hợp của Emacs:

    • Hướng dẫn Elisp - chủ yếu là một tài liệu tham khảo, nhưng một số hướng dẫn sử dụng tốt và thông tin khái niệm cũng vậy. Nó được tích hợp vào Emacs: C-h isau đó chọn hướng dẫn Elisp.

    • Giới thiệu Emacs Lisp - Giới thiệu từng bước đến Lisp và Emacs Lisp. Cũng được xây dựng thành Emacs và có sẵn từ C-h i.

  3. Vì bạn đã sử dụng Common Lisp nó sẽ là siêu dễ dàng để nhận Emacs Lisp. Xem xét bản thân may mắn về điều này.

    Nếu bạn đã sử dụng Common Lisp (hoặc Zeta Lisp hoặc bất cứ thứ gì) trên máy Lisp thì trải nghiệm sẽ khá giống nhau. Bạn có thể nghĩ về Emacs như (trong số những thứ khác), một môi trường Lisp tuyệt vời. Bạn có thể đi từ 0 đến 60 trong thời gian không, khi học.

  4. Chúc vui vẻ!


2

Là một người bồi dưỡng cho Lisp, tôi rất khuyến khích ba chương đầu tiên của Peter Norvigs Paradigms of Artificial Intelligence . Những người cung cấp cho bạn một bản giới thiệu tuyệt vời và nhanh chóng về Lisp, điều này sẽ giúp bạn nhanh chóng trở lại đúng hướng.

Đối với tổng số noobs, có LISP chung: Giới thiệu nhẹ nhàng về tính toán tượng trưng dạy cho bạn các khái niệm tương tự nhưng với tốc độ thấp hơn nhiều.

Cả hai cuốn sách có sẵn trực tuyến, miễn phí.

Sau khi trải qua một trong những điều trên, bạn có thể đọc tất cả các bài đăng được gắn thẻ Elisp trên nullprogram.com và xem hướng dẫn đọc tại masteringemacs.org . Để tìm hiểu về những cạm bẫy phổ biến, đọc các câu hỏi hàng đầu ở đây sẽ có ích. Đối với các vấn đề cụ thể tìm kiếm trang web này, rosettacode hoặc công cụ tìm kiếm yêu thích của bạn.

Sau khi bạn đã quen với những điều cơ bản, hướng dẫn sử dụng Thông tin thường sẽ trả lời hầu hết các câu hỏi còn lại khi hack trên Emacs.


1

Vì bạn có nền tảng về Common Lisp và bạn "vượt qua những điều cơ bản", không có điểm nào bị lạc trong "Giới thiệu về lập trình trong Emacs Lisp".

Những gì bạn có thể làm ngay lập tức (tôi không có nền tảng về CL và nó hoạt động với tôi) là:

1) tìm chế độ bạn sử dụng và thử thêm chức năng, bạn sẽ tìm thấy trợ giúp trong Tham khảo Lisp của Emacs

2) viết tệp tùy chỉnh của riêng bạn với các chức năng đơn giản của riêng bạn, ở đây một lần nữa sử dụng Tham chiếu Lisp của Emacs

Danh sách trợ giúp-gnu-emacs cực kỳ hữu ích.


1

Bạn muốn giới thiệu gì cho một anh chàng ở vị trí của tôi để học môi trường LISP của Emacs và bắt đầu hack Emacs.

Tôi thực sự không nghĩ rằng bạn cần phải đọc một cái gì đó cụ thể trên lisp. Không có gì bí mật rằng nếu bạn muốn làm một cái gì đó trong Emacs, rất có thể, bạn chỉ cần tìm đúng lệnh hoặc ai đó đã viết mã và bây giờ nó nằm ở đâu đó trên trang wiki, hoặc github, hoặc được tạo thành một plugin . Chỉ bằng cách sao chép mã đó và đọc nó , bạn sẽ học được một phần công bằng của Emacs lisp vào thời điểm bạn thậm chí có phần hài lòng với .emacs của mình.

Nếu bạn muốn có một số ý tưởng về cách tùy chỉnh Emacs, cấu hình tùy chỉnh của người khác có thể là một nguồn khôn ngoan. Một danh sách lựa chọn các cấu hình như vậy bạn có thể tìm thấy ở đây . Mặc dù, thực sự, có tầm nhìn của riêng bạn hoạt động tốt hơn và truy cập .emacs của người khác thường chỉ được bảo hành khi bạn muốn một số câu hỏi được trả lời [ví dụ: làm cách nào để cấu trúc mã / gói của tôi?] Hoặc một số mã được sao chép cho mục tiêu cụ thể của bạn.

Duyệt MELPA đã cho tôi cài đặt và thử có thể cả tá gói.

Nếu bạn định phát triển một plugin, tôi thấy rằng việc đọc mã của một số plugin cụ thể theo ý thích của bạn có thể giúp bạn bắt đầu khá nhanh.

Vì bạn sử dụng vi, hãy kiểm tra chế độ tà ác , nó đã làm việc rất tốt cho tôi. Tôi cũng muốn giới thiệu helm với lệnh helm-apropos(hoặc chỉ aproposkhi bạn không muốn helm) để làm cho hành trình của bạn dễ dàng hơn.

Vì vậy, lời khuyên của tôi là đến điểm tùy chỉnh ngay lập tức và bạn sẽ học mọi thứ bạn cần trên đường đi. Đặc biệt là bạn đã hack lisp trước đó, từ lâu hay không, và bởi vì việc học elisp là, theo như tôi có thể nói, một phương tiện để kết thúc cho bạn, đó là tùy chỉnh emacs.


1

Theo dõi Elisp về tập thể dục.io cũng là một cách thú vị để cải thiện kỹ năng của bạn. Các bài tập tập trung vào elisp hơn trên Emacs nhưng sẽ bao gồm một loạt các điều cơ bản tốt như biểu thức chính quy, cấu trúc dữ liệu, toán học, v.v.


Bạn có thể cải thiện tài liệu tham khảo đó (ví dụ cung cấp một liên kết)? Bạn có thể vui lòng tóm tắt những gì được tìm thấy ở đó (có vẻ như bài tập nào đó) không?
vẽ

tập thể dục.io Đó là một trang web nơi bạn có thể chọn một ngôn ngữ và giải quyết các vấn đề khác nhau với nó - và xem các giải pháp của người khác. Tôi đã tìm thấy các giải pháp cho vấn đề của người khác mà bạn vừa dành thời gian giải quyết là một cách tốt để tìm hiểu các tính năng mới hơn.
Bọ cánh cứng B.

0

Dường như với tôi rằng câu trả lời của Loren Ipsum bao gồm nó khá tốt.

https://emacs.stackexchange.com/a/47320/21433

Tôi chỉ đơn giản là thêm rằng tôi giả sử bạn biết những điều cơ bản của Lisp. Điều đó sẽ giúp bạn, nhưng nó không cần thiết (tôi sẽ lấy lại về điều đó.)

Một cách để học là chỉ cần hack hoặc sửa đổi một chế độ / tiện ích mở rộng hiện có. Tôi đã học được nó vào năm 93 bằng cách hack ở tệp chế độ ngôn ngữ Ada. Đó là một trong những trải nghiệm thú vị nhất tôi từng có ở trường đại học.

Vì vậy, bạn có thể làm điều đó với ngôn ngữ bạn chọn, giả sử, chế độ Java hoặc chế độ Lisp hoặc thậm chí là tệp chế độ Elisp.

Thay đổi nó, thêm macro, vv Đó là cách tôi đã làm nó.

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.