我了解nil
,0
和/或-1
用于禁用某些功能t
,1
和和/或+1
用于启用某些功能。在分配变量或启用/禁用次要模式时,我应该选择哪个?
我已经看到所有这些变化都在某一点或另一点使用。这使我想知道它们之间是否确实存在差异。我已经看到有时使用0
对我nil
不起作用,而对我却不起作用。使用位置是否有差异?
我了解nil
,0
和/或-1
用于禁用某些功能t
,1
和和/或+1
用于启用某些功能。在分配变量或启用/禁用次要模式时,我应该选择哪个?
我已经看到所有这些变化都在某一点或另一点使用。这使我想知道它们之间是否确实存在差异。我已经看到有时使用0
对我nil
不起作用,而对我却不起作用。使用位置是否有差异?
Answers:
在设置任何变量之前,必须知道如何解释该变量。同样,在调用任何函数(包括用于切换次要模式的函数)之前,必须知道如何解释该函数的参数。
使用C-hf和C-hv查看有问题的函数或变量的文档。它应该指定期望的值。
“非零” 字面意思是任何不是的意思nil
。这包括0
和负数。
让我们举一个具体的例子。输入C-hfblink-cursor-mode
并点击RET以查看功能文档blink-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)
请注意t
,即使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
并点击RET以查看该变量的文档truncate-lines
:
截断行是在“ C源代码”中定义的变量。
非零表示不显示连续行。而是给每一行文本仅一个屏幕行。
您可以通过以下任意一种方式打开截断功能:
(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
)。
这些都是不同的东西。0、1和-1是不同的数字;nil
是一个符号。
他们每个人都在各地使用,用于许多不同的事情。要了解每种情况在特定上下文中的用途,请查阅该上下文的文档。这包括打开或关闭不同模式,使用变量启用和禁用不同事物的上下文以及许多其他上下文。
总共:
给定模式的文档通常会告诉您如何打开和关闭它。如果它告诉您将1或-1 nil
或non nil
用作某物,那就意味着它。有一些打开和关闭模式的通用规则(以交互方式以及从Lisp代码中)。但这听起来好像您真的需要先获得一些一般背景。
请查阅Emacs文档,以了解如何从Emacs本身寻求帮助和其他信息:如何检查变量的值,如何查看变量或函数的文档(包括打开/关闭模式的函数) , 等等。
您可以使用 C-h C-h
(Ctrl-h Ctrl-h)开始,以了解Emacs帮助系统。然后从那里建立。
C-h r
让您进入Emacs手册。试试Emacs教程:C-h t
。并检查Emacs Wiki 新手页面和LearningEmacs页面。
要开始学习Emacs Lisp ::C-h i
,然后选择名为的手册Emacs Lisp Intro
并开始阅读。并查看有关学习Emacs Lisp的Emacs Wiki页面。
nil
false和t
true 的逻辑等价方式如何,其余只是数字。但我不知道的什么环境里,他们在平时使用。