변수를 설정하거나 모드를 활성화 할 때 nil과 0 또는 t와 1 중에서 선택하는 방법


19

나는 이해 nil, 0및 / 또는 -1일부 기능을 사용하지 않도록 설정에 사용되는 t, 1및 / 또는 +1일부 기능을 활성화하는 데 사용됩니다. 변수를 할당하거나 마이너 모드를 활성화 / 비활성화 할 때 어떤 것을 선택해야합니까?

이 모든 변형이 한 지점에서 사용되는 것을 보았습니다. 실제로 그들 사이에 차이점이 있는지 궁금해합니다. 나는 때때로 사용 0하는 것이 효과가 없다는 것을 알았습니다 nil. 사용 장소에 차이가 있습니까?


1
나는 당신이 생각하는 것을 더 명확하게 진술하기 위해 질문을 다시 썼습니다. 내가 틀렸다면 수정 사항을 되 돌리십시오.
nispio

@nispio 편집 내용은 괜찮습니다. 대단히 감사합니다. :)
greduan

답변:


17

TL; DR

변수를 설정하기 전에 해당 변수를 해석하는 방법을 알아야합니다. 마찬가지로, 부 모드를 전환하는 데 사용되는 함수를 포함하여 함수를 호출하기 전에 해당 함수의 인수가 해석되는 방식을 알아야합니다.

사용 C-hfC-hv문제의 함수 나 변수에 대한 문서를 볼 수 있습니다. 예상되는 값을 지정해야합니다.

"Non-nil"은 문자 적 으로 그렇지 않은 것을 의미 nil합니다. 0음수를 포함 합니다.


마이너 모드

구체적인 예를 들어 봅시다. 다음에 대한 함수 문서를 보려면 입력 C-hfblink-cursor-mode 하고 누르십시오 .RETblink-cursor-mode

(깜박임 커서 모드 및 선택적인 ARG)

커서 깜박임 전환 (깜박임 커서 모드). 접두어 인수 ARG를 사용하여 ARG가 양수이면 깜박임 커서 모드를 활성화하고 그렇지 않으면 비활성화하십시오. Lisp에서 호출 된 경우 ARG가 생략되거나 nil이면 모드를 활성화하십시오.

다음 방법 중 하나로 깜박임 커서 모드를 활성화 할 수 있습니다.

(blink-cursor-mode)           ; Omitted argument
(blink-cursor-mode 1)         ; Positive argument
(blink-cursor-mode t)         ; True argument
(blink-cursor-mode nil)       ; nil argument (don't use this)

tdoc 문자열이 특별히 언급하지 않았더라도 인수 가 작동합니다. 이 경우가 종종 있지만 가장 안전한 방법은 doc 문자열에서 지시하는 것을 사용하는 것입니다.이 경우 양수 값입니다.

또한 인수가 효과 nil가 있음을 주목하십시오 . 나는 nil당신의 의도가 불분명하기 때문에 이런 식으로 반대하는 것이 좋습니다 . 내가 당신의 lisp 코드를 훑어보고 nil논쟁을 보았을 때 , 당신이 마이너 모드를 비활성화하고 싶다고 가정합니다.

blink-cursor-mode다음과 같은 방법으로 비활성화 할 수도 있습니다 .

(blink-cursor-mode 0)         ; Non-positive argument
(blink-cursor-mode -1)        ; Negative argument

이 마이너 모드를 비활성화하는 방법 중 하나 nil아님을 다시 한 번 주목하십시오 . 이것은 거의 모든 사소한 모드에서 발생합니다.


변수

이제 변수의 예를 봅시다. 변수에 대한 문서를 보려면 입력 C-hvtruncate-lines하고 누르십시오 .RETtruncate-lines

truncate-lines는`C 소스 코드 '에 정의 된 변수입니다.

non-nil은 연속 선을 표시하지 않음을 의미합니다. 대신, 각 텍스트 줄에 하나의 화면 줄을 지정하십시오.

다음 방법 중 하나로 잘라내기를 켤 수 있습니다.

(setq truncate-lines t)       ; Boolean true value (non-nil)
(setq truncate-lines 1)       ; Positive value (non-nil)
(setq truncate-lines 0)       ; Zero value (non-nil)
(setq truncate-lines -1)      ; Negative value (non-nil)

0-1의지가 작동 한다는 사실에 놀라실 수도 있습니다. 다시 말하지만, 의도가 불분명하기 때문에 사용하지 않는 것이 좋습니다.

잘림을 비활성화하는 유일한 방법은 다음과 같습니다.

(setq truncate-lines nil)     ; nil value

즉 당신은 설정할 수있는 truncate-lines만큼 그것을하지 않습니다에 평가로, 숫자, 문자, 문자열,리스트, 또는 다른 어떤 당신이 원하는 같 nil은 것입니다 수 있도록 잘림. (하지만 당신은 정말 고수해야 t또는 1).


이것은 내 질문에 대답했다. 감사합니다. :)
greduan

0

이것들은 모두 다른 것입니다. 0, 1 및 -1은 다른 숫자입니다. nil기호입니다.

그들은 많은 다른 것들을 위해 모든 곳에서 사용됩니다. 각각에 사용되고 있는지 확인하려면 특정 상황에서 , 그 상황에 대한 문서를 참조하십시오 . 여기에는 다양한 모드를 켜거나 끄는 컨텍스트, 변수를 사용하여 다른 것을 활성화 및 비활성화하는 컨텍스트 및 기타 많은 컨텍스트가 포함됩니다.

요약해서 말하면:

  • 귀하의 질문이 너무 광범위하여 유용하지 않습니다.
  • (a) 일반적으로 Emacs Lisp에 대해 약간 배우고 (b) 특정 상황에서 (예 : 특정 모드에 대한 문서) 문서를 참조해야합니다.

주어진 모드에 대한 문서는 일반적으로 켜고 끄는 방법을 알려줍니다. 무언가 를 위해 1 또는 -1을 사용 nil하거나 비- 를 사용하도록 지시하면 nil이것이 의미합니다. 대화식으로 그리고 Lisp 코드에서 모드를 켜고 끄는 일반적인 규칙 이 있습니다 . 그러나 일반적인 배경을 얻는 것으로 시작 해야하는 것처럼 들립니다.

Emacs 자체에서 도움 및 기타 정보요청 하는 방법 : 변수 값을 확인하는 방법, 변수 또는 함수 문서를 보는 방법 (모드를 켜거나 끄는 기능 포함) 을 배우려면 Emacs 문서를 참조하십시오. , 등등.

당신은 할 수 있습니다 사용하여 시작 C-h C-h ( Ctrl-h Ctrl-h이맥스 도움말 시스템에 대해 배우고,). 그리고 거기에서 구축하십시오.

C-h rEmacs 매뉴얼에 들어갑니다. Emacs 튜토리얼을 시도하십시오 : C-h t. Emacs Wiki Newbie 페이지와 LearningEmacs 페이지를 확인하십시오 .

Emacs Lisp에 대해 배우기 시작하려면 C-h i이라는 이름의 매뉴얼을 선택하고 Emacs Lisp Intro읽기를 시작하십시오. Emacs Lisp 학습 에 대한 Emacs Wiki 페이지를 확인하십시오 .


1
답변 주셔서 감사합니다. :) 나는 그들이 어떤 맥락에서 사용되는지 묻고있는 것 같아요. 감사합니다. :) 나는 nil논리가 거짓과 t참과 어떻게 동등 하고 나머지는 단지 숫자와 같은 기호 사이의 주요 차이점을 알고 있습니다. 그러나 나는 그들이 어떤 맥락에서 일반적으로 사용되는지 확신하지 못했습니다.
greduan

모드에 대한 일반적인 정보 (설명서 링크)에 대해 쓴 내용을 참조하십시오. 이러한 일반적인 정보에도 불구하고 항상 관심있는 특정 모드에 대한 문서를 확인하여 시작해야합니다. 문서를 켜거나 끄는 데 사용할 항목을 알려줍니다. 그렇지 않은 경우 매뉴얼에 설명 된 일반 동작이 적용되지만 특정 모드 doc로 시작하십시오 . 요점은 그 자체와 그 자체의 차이점이 아닙니다. 요점은 특정 상황에서 사용되는 방식의 차이점입니다. 이를 위해 컨텍스트를 요청하여 시작하십시오.
Drew

1
확인. 대단히 감사합니다. :) 이맥스가 자체 SE 사이트를 가지고 있다는 것을 아시나요?
greduan

1
추신 걱정하지 마십시오. 나는 다른 사람들이 일반적인 규칙 중 일부에 대해 콩을 쏟을 것이라고 확신합니다 . ;-) 나는 (a)이 학습을 염두에두고 작성 되었기 때문에 문서에 대해 상담하도록하고, (b) 항상 특정 모드 자체에 대해 질문하여 시작하도록하십시오. 일반적인 규칙은 모드의 세부 사항을 능가하지 않으며, 후자를 무시하면 놓칠 것입니다.
Drew

SE가 자체 Emacs 모드를 얻을 때 멋진 것이 될 것입니다. ;-)
Drew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.