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


19

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

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


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

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

답변:


17

TL; DR

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

사용 C-hf및 C-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.