2012-06-10 3 views
4

Emacs에는 괄호 (또는 괄호)로 구분 된 표현식, 즉 forward-sexp, backward-sexp, forward-list 및 backward-list로 커서를 이동시키는 명령이 있습니다. Lisp와 다른 코드에서 그들은 비슷하게 행동합니다. 그래서 * -sexp와 * -list 사이에는 아무런 차이가 없습니다. 단, 마지막은 주석이나 따옴표 안에서 작동하지 않습니다.Emacs에서 sexp와 list의 차이점은 무엇입니까?

sexp와 list 명령의 기능상의 차이점은 무엇이며 언제 사용해야합니까?

위의 목록과 아래쪽 명령을 이해할 수 있습니다. 주제와 관련이 없습니다.

답변

4

목록은 s- 표현식의 한 예이므로 s- 표현식에서 작동하는 모든 함수는 목록에서 작동해야합니다 (그러나 목록이 아닌 셈플이기 때문에 반드시 그 반대 일 필요는 없습니다).

elisp 매뉴얼은 말한다 :

평가를위한 것입니다 리스프 객체가 "형식"또는 "표현"이라고합니다 (1). 양식이 데이터 객체이고 단지 텍스트가 아니라는 사실은 Lisp 계열 언어 과 일반적인 프로그래밍 언어 간의 근본적인 차이 중 하나입니다. 어떤 개체라도 평가할 수 있지만 연습에서는 숫자, 기호, 목록 및 문자열 만 매우 자주 으로 평가됩니다.

---------- 각주 ----------

(1)는 또한 때때로 "S 발현"또는 "sexp"이라하고, 하지만이 설명서에서는 일반적으로이 용어를 사용하지 않습니다.

C-H 나g(elisp) Intro EvalRET

4

모든 S-표현식리스트, 예를 들어 변수는 분명히 목록이 아닌 반면 s- 표현식입니다. 당신이 라인의 시작 부분에 점을 배치하면 forward-list이의 끝 지점을 이동하면서

foo (bar) 

forward-sexp는 "foo는"의 끝 지점을 이동합니다 :

는 다음과 같은 예를 생각해 "(막대)"