最后,有一个我真的很喜欢的功能:修改后的模式行。
当我通过网络工作时,我会忘记我使用的是哪台机器。而且,我往往会迷失在当前位置、光标所在行等信息中。
因此,我将我的模式行重置为以下样式:
-:-- foo.texi rattlesnake:/home/bob/ 行 1 (Texinfo 填充) 顶部
我正在访问一个名为foo.texi的文件,位于我的机器rattlesnake上,位于/home/bob缓冲区。我在第1行,在Texinfo模式下,并且位于缓冲区的顶部。
我的.emacs文件有一个如下的部分:
;; 设置一个模式行,告诉我所在的机器、目录和所在的行,以及其他通常的信息。 (setq-default mode-line-format (quote (#("-" 0 1 (help-echo "mouse-1: 选择窗口, mouse-2: 删除其他...")) mode-line-mule-info mode-line-modified mode-line-frame-identification " "
mode-line-buffer-identification " " (:eval (substring (system-name) 0 (string-match "\\..+" (system-name)))) ":" default-directory #(" " 0 1 (help-echo "mouse-1: 选择窗口, mouse-2: 删除其他...")) (line-number-mode " 行 %l ") global-mode-string
#(" %[(" 0 6 (help-echo "mouse-1: 选择窗口, mouse-2: 删除其他...")) (:eval (format-time-string "%F")) mode-line-process minor-mode-alist #("%n" 0 2 (help-echo "mouse-2: 扩大" local-map (keymap ...))) ")%] " (-3 . "%P") ;; "-%-" )))
在这里,我重新定义了默认的模式行。列表中的大多数部分来自原始模式行;但我做了一些更改。我设置了默认的模式行格式,以允许各种模式(如Info)覆盖它。
列表中的许多元素都是不言自明的:
mode-line-modified
是一个变量,表示缓冲区是否被修改,mode-name
表示模式的名称等等。但是,格式看起来很复杂,是因为我们还没有讨论的两个特性。
模式行中的第一个字符串是一个破折号,‘-’。在过去,它将简单地指定为"-"
。但现在,Emacs可以为字符串添加属性,如高亮或者在本例中,一个帮助功能。如果将鼠标光标放在连字符上,将显示一些帮助信息(默认情况下,您必须等待七分之一秒才能看到信息。您可以通过更改tooltip-delay
的值来更改该时间。)
新字符串格式具有特殊的语法:
#("-" 0 1 (help-echo "mouse-1: 选择窗口, ..."))
#(
开始一个列表。列表的第一个元素是字符串本身,只有一个‘-’。第二个和第三个元素指定第四个元素适用的范围。范围从字符之后开始,所以零表示范围从第一个字符之前开始;1表示范围在第一个字符之后结束。第三个元素是范围的属性。它包含一个属性列表,一个属性名称,在本例中是‘help-echo’,后跟一个值,在本例中是一个字符串。新字符串格式的第二、第三和第四个元素可以重复。
See 文本属性 in GNU Emacs Lisp参考手册, 并参见模式行格式 in GNU Emacs Lisp参考手册,获取更多信息。
mode-line-buffer-identification
显示当前缓冲区的名称。它是一个以(#("%12b" 0 4 …
开头的列表。
#(
开始列表。
‘"%12b"’显示当前缓冲区的名称,使用我们熟悉的buffer-name
函数;‘12’指定将显示的最大字符数。当名称字符较少时,将添加空格以填充到这个数字。 (缓冲区名称可以并且通常应该比12个字符长;在典型的80列宽窗口中,此长度效果很好。)
:eval
表示评估以下表达式,并将结果用作要显示的字符串。在这种情况下,该表达式显示完整系统名称的第一个组成部分。第一个组成部分的末尾是‘.’(句点),因此我使用string-match
函数告诉我第一个组成部分的长度。从第零个字符到该长度的子字符串是机器的名称。
这是表达式:
(:eval (substring (system-name) 0 (string-match "\\..+" (system-name))))
‘%[’和‘%]’使每个递归编辑级别都出现一对方括号。 ‘%n’在缩小效果生效时说“Narrow”。“%P”告诉您在窗口底部之上的缓冲区百分比,或者是“Top”、“Bottom”或“All”(小写的‘p’告诉您在窗口顶部之上的百分比)。 ‘%-’插入足够的破折号以填满整行。
记住,你不一定非要喜欢Emacs才能使用它—你自己的Emacs可以有不同的颜色、不同的命令和不同的键盘快捷键,与默认的Emacs不同。
另一方面,如果您想要启动一个纯粹的开箱即用的Emacs,没有定制,请键入:
emacs -q
这将启动一个不加载您的~/.emacs初始化文件的Emacs。一个纯粹的、默认的Emacs。没有更多。