Emacs Lisp 학습을 시작하려면 어떻게해야합니까?


39

배경:

나는 주로 vi 사용자이며 Emacs로 변환하고 있습니다.

기본 사항을지나 이제는 C로 코드를 작성하고 R 변환을 수행하려는 일부 Python으로 코드를 작성하는 데 사용하십시오.

저는 20 년 전에 대학원에 다닐 때 (공통) LISP를 썼습니다.하지만 지금은 심하게 타락했습니다 (hello world를 쓸 수는 있지만 그게 다입니다).

질문:

내 위치에있는 사람이 Emacs LISP 환경을 배우고 Emacs를 해킹하기 위해 무엇을 추천 하시겠습니까?

읽어야 할 책, 블로그, 리소스, 연습이 있습니까?

답변:


11

내 경험상 Emacs Lisp에 포함 된 튜토리얼은 그다지 도움이되지 않았습니다 (수년에 두 번 시도했지만 실패했습니다). 대신, 포함 된 Emacs Lisp Reference를 마침내 사용했습니다.

마지막으로 일한 것 :

Emacs Lisp에는 기본 언어 자체와 Emacs와의 상호 작용이라는 두 가지 측면이 있음을 인식하십시오. 이 두 가지를 분리하십시오. 전자에 중점을 둡니다 (과거에 Lisp을 배웠을 때 어렵지 않아야합니다). 운동 과 같은 사이트를 사용 하여 연습하십시오.

기본 사항 (루프, 함수, 변수, 조건부 등)을 파악한 후에는 Emacs 자체 (텍스트 변경, 버퍼 전환 등)와 관련된 측면으로 넘어갑니다. 이것은 광대하고 세부적인 바다에서 길을 잃을 것입니다. 자주 사용하므로 실제로 잘 이해해야 할 것이 몇 가지 있습니다 . 그들은:

  • 인터렉티브
  • 여행을 저장하다
  • 저장 제한
  • 갈고리
  • 조언 기능
  • 전류 버퍼

ELisp 참조를 읽는 데 모든 시간을 소비하는 대신 이러한 내용을 이해 한 후에는 Emacs의 간단한 문제에 대해 작성하고 Elisp로 문제를 해결해보십시오. 일부 단계에 대한 도움이 필요할 수 있으며 Google에서 도움을 줄 수 있습니다.

Elisp를 연습하기 위해 해결 한 문제의 예 :

  • org-capture를 사용하고 캡처 버퍼의 마지막 줄에 텍스트를 쓰면 끝에 줄 바꿈 이 없으므로 캡처 위치 뒤에 헤드 라인이 있으면 해당 헤드 라인이 더 이상 헤드 라인이 아닙니다. . 수정은 줄 바꿈이 있는지 확인하고 없으면 줄 바꿈 끝에 추가하는 후크를 만드는 것입니다.

  • 한 단계에서 캡처하고 파일을 다시 보관할 때 항목이 다시 파일로 저장된 파일을 저장하지 않습니다. 그러나 다시 프로파일 링하지 않고 캡처하면 캡처됩니다. 이 불일치를 수정했습니다.

  • 회의 중 (org 파일로) 회의록을 작성할 때 누군가를위한 TODO가 나타나면 TODOs (최상위 제목 아래)라는 제목을 찾아서 TODO를 배치하는 캡처를 만들고 싶습니다. 그곳에. 각 회의에는 자체 TODO 헤드 라인이 있으며 파일의 현재 회의에 대한 제목으로 이동해야합니다. 여기에는 트리를 최상위 수준으로 올리는 기능을 작성하고 TODO라는 자식을 찾습니다.

  • 특정 모드의 모든 버퍼를 종료하십시오 (이미 수행하는 내부 기능이있을 수 있지만 알지 못했습니다).

마지막으로 다음 키 바인딩을 알아야합니다.

  • Cx Ce (표현식 평가)
  • Ch v (변수의 의미와 값을 찾습니다)
  • Ch f (내장 함수에 대한 설명 참조)

33

정말 좋은 질문입니다! 내가 취한 길은 다음과 같습니다.

0 단계 : Emacs 튜토리얼 읽기

무엇보다 먼저 Emacs Tutorial을 읽으십시오. 이 작업을 수행 한 것 같습니다. 나중에 좋아! 그러나 나중에이 문제를 겪는 사람이라면 누구나 이맥스 여행을 시작할 수 있습니다. 잘못된 블로그 게시물이 많이 있습니다. 그들은 일을 복잡하게 만듭니다. Emacs를 사용하면 쉽게 할 수 있습니다

  1. 이맥스 시작
  2. 프레스 <RET>

을 통해 Ctrl + h t또는 C-h tEmacs 표기법으로 액세스 할 수도 있습니다 .

이 튜토리얼은 Emacs의 기본 개념을 소개하고, 역사적인 용어를 명확하게 설명하며, 30 분 안에 들어갑니다. 또한 다음 단계의 단계를 설정합니다.

이맥스를 엽니 다.  엔터 키를 치시오.  그렇게 쉽습니다!

1 단계 : "Emacs Lisp 프로그래밍 소개"읽기

다음 단계는 Emacs Lisp 프로그래밍 소개를 읽는 것 입니다. 나는이 책을 충분히 추천 할 수 없다. 잘 작성되었습니다! 대부분의 Emacs 설치와 함께 제공됩니다 1 . C-h i메뉴에서 간단히 누르고 선택하면됩니다. 를 통해 직접 갈 수도 있습니다 C-h i m Emacs Lisp Intro.

서문 상태,

이 텍스트는 프로그래머가 아닌 사람들을위한 초급 소개로 작성되었습니다.

"Lisp 프로그래머가 아닌 사람들을 위해"라고 말해야합니다. Lisp는 다른 언어와 약간 다르므로 Lisp에 익숙하지 않은 경우 읽을 가치가 있습니다. 저자는 접근하기 쉬운 스타일을 가지고 있으며 많은 예제를 안내합니다. 작업하는 데 일주일 정도 걸렸습니다.

1.5 단계 : John Wiegley의 Emacs Lisp 개발 팁

2015 년 말 현재 John은 Emacs 프로젝트관리자입니다 . Sacha Chua는 John이 개발 환경 인 Emacs Lisp의 기본 사항을 다루는 훌륭한 인터뷰를하며 여기 에서 훌륭한 인터뷰를 합니다.

2 단계 : OPC (다른 사람들의 코드) 읽기

2a. 소스 코드를 읽으십시오

Emacs는 "확장 가능하고 사용자 정의 가능한 자체 문서화 실시간 디스플레이 편집기"이기 때문에 모든 소스 코드가 포함됩니다. C-h f함수와 C-h v변수에 대한 도움말 기능을 사용하는 방법을 배웁니다 . 항상 소스 코드에 대한 링크가 있습니다 :

소스 코드 링크를 클릭하면 소스 코드를 볼 수 있습니다!

2b. 모든 읽기 init.el'들

많은 사람들 init.el이 Git 또는 Mercurial에서 파일을 추적합니다 . 그들을 찾아라. 한 가지 방법은 StackOverflow에서 사람들의 프로필, 특히 emacs.stackexchange.com 을 클릭하는 것입니다 .

Dude는 파워 유저입니다!

그들은 종종 그들의 GitHub 또는 개인 웹 사이트에 대한 링크를 가지고 있습니다 :

먼지를 지불하십시오!

리포지토리는 호출 dotemacs되었거나 dotfiles상당히 일반적입니다. 시간이 지남에 따라 좋은 코드의 모양과 나쁜 코드의 모양을 알 수 있습니다. 당신은 또한 그와 같은 큰 이름을 배울 수 Xah , 사샤 Chua의 , binchen , Magnar Sveen , ABO-ABO , 그리고 더 많은. 배울 사람이 너무 많습니다!

3 단계 : 이맥스 해킹

원하는 기능을 작성하도록 도전하십시오. 맹목적으로 코드를 복사하지 마십시오. 항상 시간을내어 이해하십시오. 이해가되지 않으면 사용하지 마십시오! 새로운 것을 배우는 것 외에도 코드를 이해하는 데 시간이 걸리면 종종 특정 사용 사례에 맞게 코드를 개선하는 방법을 생각합니다. 이것은 해킹 할 수있는 기회입니다! 결국, 그것이 당신의 init.el것입니다! 실수를하고, 물건을 깨고, 디버깅하는 법을 배우십시오. Emacs는 Elisp로 작성 되었기 때문에 개발은 기쁨입니다.

4 단계 : emacs.stackexchange.com에 대한 질문

StackExchange의 Emacs 커뮤니티는 좋은 Elisp 질문을 좋아합니다. 따라서 다른 사람들이 배우려는 노력에 감사 할 것이라는 확신을 가지고 해킹하십시오.

5 단계 : emacs.stackexchange.com에 대한 질문에 답변

무언가를 설명하려는 것처럼 당신의 이해를 명확하게하는 것은 없습니다. 메인 페이지를 스크롤하면 알지 못했던 질문에 대한 답변도 찾을 수 있습니다.

결론

시간이 지남에 따라 솔루션을 더 빨리 생성하고 다른 사람들의 질문에 대답 할 수 있습니다. 모든 프로그래밍과 마찬가지로 실망 스러울 수 있습니다. 그러나 어제 자신에 대해 오늘 자신을 판단하는 것을 잊지 마십시오. 어떤 사람들은 말 그대로 30 년 동안 이맥스를 해킹했습니다! 그러나 대부분의 경우, Emacs는 함께 일하는 즐거움이며 그것이 제공하는 자유가 고무적이라는 것을 알게 될 것입니다.

행복한 해킹! :)

추신 : 패키지 악을 확인하십시오 .


1 일부 설치에는 제공되지 않습니다. 예를 들어 데비안 사용자는 별도로 설치해야합니다. 그것은 어리석은 일이지만 비 자유 저장소에 저장됩니다 . 각 항목의 끝에 /etc/apt/sources.list추가 non-free하여 무료가 아닌 저장소를 추가 하십시오.

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

1
방금 quora를 방문한 것 같습니다
user3496846

10

"Emacs Lisp Intro"를 추천합니다.

"Emacs Lisp Intro"는 Emacs 내에서 정보 형식으로 이미 사용 가능할 수 있습니다. Emacs에서 시도 C-h i m Emacs Lisp Intro RET하거나 평가 하십시오 (info "(eintr) Top").

이것이 실패하면 웹에서 "Emacs Lisp Intro"를 검색하십시오.


7
  1. Emacs Wiki 페이지 Learn Emacs Lisp로 시작하십시오 .

    그 페이지 자체가 Emacs Lisp를 가르쳐주지는 않습니다. 그 대신 질문과 함께 학습 자료 , 바로 여기 에서 원하는 내용을수 있습니다 . 많은 사용자들이 그것에 기여하고 몇 년에 걸쳐 그것을 편집했습니다. 그것은 한 사용자의 블로그에 장점과 단점을 제공합니다. 제안의 품질은 다양한 입력으로 인해 물론 다양합니다.

  2. 그 외에도-여기에 다른 사람들이 말한 모든 것, 특히 내장 된 Emacs 의사부터 시작하십시오.

    • Elisp 매뉴얼-대부분은 참고 자료이지만, 좋은 사용법 지침과 개념 정보도 있습니다. Emacs에 내장되어 있습니다 : C-h iElisp 매뉴얼을 선택하십시오.

    • Emacs Lisp 소개-Lisp 및 Emacs Lisp에 대한 단계별 소개. 또한 이맥스에 내장되어 있으며에서 구할 수 있습니다 C-h i.

  3. Common Lisp를 사용 했으므로 Emacs Lisp를 선택하는 것이 매우 쉽습니다. 운이 좋다고 생각하십시오.

    Lisp 시스템에서 Common Lisp (또는 Zeta Lisp 또는 기타)를 사용한 경우 경험이 매우 비슷합니다. Emacs는 다른 무엇보다도 훌륭한 Lisp 환경이라고 생각할 수 있습니다. 학습 할 때 즉시 0에서 60으로 갈 수 있습니다.

  4. 즐기세요!


2

Lisp에 대한 새로운 정보로 Peter Norvigs 의 인공 지능 프로그래밍 패러다임의 첫 세 장을 강력히 추천합니다 . 이것들은 당신에게 Lisp에 대한 아주 빠른 페이스 (재) 소개를 제공합니다.

멍청한 놈들에게는 COMMON LISP : Symbolic Computation에 대한 부드러운 소개가 있습니다.

두 책 모두 온라인으로 무료로 제공됩니다.

위의 방법 중 하나를 수행 한 후 nullprogram.com 에서 Elisp 태그가 지정된 모든 게시물을 읽고 masteringemacs.org 의 읽기 가이드를 참조하십시오 . 여기 에서 주요 질문을 읽는 일반적인 함정에 대해 배우는 것이 도움이 될 것입니다. 특정 문제는이 사이트, rosettacode 또는 선호하는 검색 엔진을 검색하십시오.

기본 사항에 익숙한 후에는 Info 매뉴얼에서 일반적으로 Emacs를 해킹 할 때 발생하는 대부분의 질문에 대답합니다.


1

Common Lisp에 대한 배경 지식이 있고 "기본 사항을 지나쳤습니다." "Emacs Lisp의 프로그래밍 소개"에서 잃어버린 점이 없습니다.

당신이 바로 할 수있는 일은 (CL에 배경이 없으며 저에게 효과적이었습니다) :

1) 사용하는 모드를 찾고 기능을 추가하려고 시도하면 Emacs Lisp Reference에서 도움말을 찾을 수 있습니다.

2) 간단한 함수를 사용하여 사용자 정의 파일을 작성하십시오. 여기서 Emacs Lisp Reference를 다시 사용하십시오.

help-gnu-emacs 목록은 매우 유용합니다.


1

내 위치에있는 사람이 Emacs LISP 환경을 배우고 Emacs를 해킹하기 위해 무엇을 추천 하시겠습니까?

나는 당신이 emacs lisp에 특정한 것을 읽을 필요가 없다고 생각합니다. Emacs에서 무언가를하고 싶다면 올바른 명령을 찾 거나 누군가가 이미 코드를 작성했으며 이제 Wiki 페이지 또는 github의 어딘가에 있거나 플러그인으로 만들어 졌다는 것은 비밀이 아닙니다. . 그냥 복사 붙여 넣기 그 코드에 의해 그것을 읽고 , 당신은 당신도 어느 정도 당신의 이맥스에 만족하는 시간 이맥스 LISP의 공정한 점유율을 배운 것입니다.

Emacs를 사용자 정의하는 방법에 대한 아이디어를 얻으려면 다른 사람들의 사용자 정의 구성이 좋은 지혜의 원천이 될 수 있습니다. 이러한 구성의 선택된 목록은 여기에서 찾을 수 있습니다 . 실제로 자신의 비전이 더 잘 작동하고 다른 사람들의 .emacs를 방문하는 것은 일반적으로 질문에 대한 답변 (예 : 코드 / 패키지를 어떻게 구성합니까?)이나 특정 목표를 위해 복사 한 코드를 원할 때만 보증됩니다.

브라우징 MELPA는 설치하고 어쩌면 패키지의 다스를 시도하는 저를 얻었다.

플러그인을 개발하려는 경우 원하는 특정 플러그인의 코드를 읽으면 상당히 빨리 시작할 수 있습니다.

vi를 사용하고 evil-mode를 확인하면 나에게 큰 도움이되었습니다. 또한 여행을 더 쉽게하기 위해 helm-apropos(또는 apropos원하지 않는 경우 helm) 명령을 사용하는 것이 좋습니다.

따라서 제 조언은 바로 커스터마이즈 포인트에 도달하는 것입니다. 그러면 이동 중에 필요한 모든 것을 배울 수 있습니다. 특히, 당신은 오래 전에, 또는 오래 전에 lisp를 해킹했고, elisp를 배우는 것은 내가 알 수있는 한, emacs를 사용자 정의하는 수단입니다.


1

exercism.io의 Elisp 트랙은 또한 기술을 향상시키는 재미있는 방법입니다. 이 연습은 Emacs보다 elisp에 중점을 두지 만 정규 표현식, 데이터 구조, 수학 등과 같은 다양한 기본 사항을 다룹니다.


참조를 개선 할 수 있습니까 (예 : 링크 제공)? 거기에서 발견 된 것을 요약 해 주시겠습니까?
Drew

exercism.io 언어를 선택하고 다양한 문제를 해결하고 다른 사람들의 솔루션을 볼 수있는 사이트입니다. 방금 해결 한 문제에 대한 다른 사람들의 솔루션을 탐색하는 것이 새로운 기능을 배우는 좋은 방법이라는 것을 알았습니다.
비틀 B.

0

Loren Ipsum의 대답이 그것을 잘 다루는 것 같습니다.

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

Lisp의 기본 사항을 알고 있다고 가정합니다. 그것은 당신을 도울 것입니다, 그러나 그것은 필요하지 않습니다 (나는 다시 돌아올 것입니다.)

배우는 한 가지 방법은 기존 모드 / 확장 프로그램을 해킹하거나 수정하는 것입니다. 나는 Ada 언어 모드 파일을 해킹하여 93 년에 그것을 배웠습니다. 내가 대학에서 돌아온 가장 재미있는 경험 중 하나였습니다.

따라서 Java 모드 또는 Lisp 모드 또는 Elisp 모드 파일과 같은 언어를 사용하여이를 수행 할 수 있습니다.

그것을 바꾸고 매크로를 추가하는 등 내가 그렇게했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.