自定义您的 Emacs 环境
Emacs 提供了许多影响并改变其行为的变量。表 1 列出了一些经常进行修改的变量,并描述了它们的功能。
变量 | 描述 |
---|---|
auto-mode-alist | 如果设置为 nil ,那么将关闭根据文件名扩展自动选择主要模式的功能。它的缺省值是一些文件名扩展和相应模式的列表。 |
auto-save-default | 如果没有将其设置为 nil ,那么 Emacs 则根据预设的时间间隔,自动地将经过更改的缓冲区保存到相应的文件。它的缺省值是 t 。 |
auto-save-interval | 包含调用 Auto-save 模式(如果它被设置为“真”)之后经过更改的字符的数目,其缺省值是 300。 |
calendar-latitude | 包含用户工作站位置的纬度值,采用度数表示;其缺省值是 nil 。 |
calendar-longitude | 包含用户工作站位置的经度值,采用度数表示;其缺省值是 nil 。 |
calendar-location-name | 包含用户工作站所在位置的位置名(如城市、州或省、国家/地区)的值,其缺省值是 nil 。 |
colon-double-space | 如果没有将其设置为 nil ,那么填充文本的命令将在冒号后面插入两个 空格而不是一个。其缺省值是 nil 。 |
command-line-args | 包含在当前 Emacs 会话中所执行的命令行中使用的参数列表。 |
command-line-default-directory | 包含执行当前 Emacs 会话的目录的路径名。 |
compare-ignore-case | 如果没有将其设置为 nil ,那么在运行 compare-windows 函数的时候,Emacs 将忽略大写字母和小写字母的区别,如在本系列文章的第 5 部分教程中所描述的(请参见参考资料)。其缺省值是 nil 。 |
confirm-kill-emacs | 如果设置为 nil ,那么 Emacs 在退出的时候不请求确认;否则,可能自定义 Emacs Lisp 函数以完成退出验证工作,如 y-or-n-p (请参见使得简短的回答成为可能部分)。其缺省值是 nil 。 |
default-justification | 设置缺省的对齐风格。该值可能是 left 、right 、center 、full 或者 none 中的一个。其缺省值是 left 。 |
default-major-mode | 为新的文件或者缓冲区选择缺省主要模式。其缺省值是 fundamental-mode 。 |
display-time-24hr-format | 如果设置为 t ,那么 Emacs 将采用 24 小时军用格式来显示时间,而不是采用带有 AM 或者 PM 后缀的标准 12 小时格式。其缺省值是 nil 。 |
display-time-day-and-date | 如果没有将其设置为 nil ,那么 Emacs 以当前星期几、当前月份和日期的格式来显示时间,而不仅仅显示小时和分钟。其缺省值是 nil 。 |
fill-column | 包含各行中的列数(从此处开始填充文本到下一行)。其缺省值是 70。 |
initial-major-mode | 指定启动时用于 *scratch* 缓冲区的主要模式。其缺省值是 lisp-interaction-mode 。 |
inverse-video | 如果没有将其设置为 nil ,那么 Emacs 将对显示的颜色取反(如果可能的话)。其缺省值是 nil 。 |
kill-ring | 包含 Emacs 剪切环的内容,如本系列文章的第 3 部分教程中所描述的(请参见参考资料)。 |
kill-ring-max | 设置剪切环中所允许的条目数。其缺省值是 60。 |
kill-whole-line | 如果没有将其设置为 nil ,那么 kill-line 函数(绑定于 C-k )将剪切当前行以及 其尾部的换行符(如果是在该行的开头处执行这个函数)。其缺省值是 nil 。 |
make-backup-files | 如果没有将其设置为 nil ,Emacs 将进行任何更改之前保存缓冲区的备份(使用相同的文件名,但在文件名后追加了波浪符 (~))。 |
mark-ring | 包含该缓冲区的当前标记环的内容,如本系列文章的第 3 部分教程中所描述的(请参见参考资料)。 |
mark-ring-max | 包含标记环中所允许的条目数。其缺省值是 16。 |
mouse-avoidance-mode | 包含描述 mouse-avoidance 模式类型的值,如本系列文章第 5 部分教程中所描述的(请参见参考资料)。其缺省值是 nil 。 |
next-line-add-newline | 如果没有将其设置为 nil ,那么只要按下向下箭头键,Emacs 就会在该缓冲区的末尾添加一个新行。其缺省值是 nil (在更新的 Emac 版本中)。 |
scroll-bar-mode | 包含 Emacs 框架侧边缘(放置滚动条的位置)的值:right 或 left 。如果设置为 nil ,则关闭滚动条。其缺省值是 left 。 |
scroll-step | 包含使用 scroll-down 和 scroll-up 函数(在缺省情况下,分别绑定于 PgDn 和 PgUp 键)在缓冲区中移动的行数。如果设置为 0,那么在滚动的时候,Emacs 使光标位于窗口的中心位置。 |
show-trailing-whitespace | 如果没有将其设置为 nil ,那么 Emacs 将显示当前缓冲区中的行尾处的任何空白字符。其缺省值是 nil 。 |
visible-bell | 如果没有将其设置为 nil ,那么 Emacs 将使得该框架闪烁,而不是鸣响系统警铃。其缺省值是 nil 。 |
x-cut-buffer-max | 设置剪切环的字符的最大数目,该剪切环同样存储于 X Window System 的剪切缓冲区中。其缺省值是 20000。 |
2 自定义键邦定
M-x global-set-key Set key globally: M=F1 Set key <M-F1> to command: phases-of-moon
3 自定义界面
函数 | 描述 |
---|---|
column-number-mode | 在模式行中,为光标所在的当前列(前面有一个 C)切换显示。其缺省值是 nil 。 |
display-time | 在模式行中切换当前时间的显示。其缺省值是 nil 。 |
font-lock-mode | 如果没有将其设置为 nil ,那么 Emacs 将为当前缓冲区自动地打开 Font Lock 模式。其缺省值是 nil 。 |
global-font-lock-mode | 如果没有将其设置为 nil ,那么 Emacs 将为所有的 缓冲区自动地打开 Font Lock 模式。其缺省值是 nil 。 |
line-number-mode | 在模式行中,为光标所在的当前行(前面有一个 L)切换显示,其缺省值是 t 。 |
menu-bar-mode | 切换 Emacs 菜单条的显示。其缺省值是 t 。 |
sunrise-sunset | 根据当前地理位置,显示今天日出和日落的时间。如果在它的前面加上 universal-argument ,那么这个函数将提示输入一个特定的日期。 |
tool-bar-mode | 切换 Emacs 工具条的显示。其缺省值是 t 。 |
4 启动文件
每次 Emacs 启动的时候,它都会在您的 home 目录中查找一个隐藏文件 .emac,并执行该文件中包含的所有 Emacs Lisp。这就是您的 Emacs 启动文件或者初始化文件;也可以在启动时用-u 指定
(1)使用 .emac 初始化文件的最常见的目的可能是设置某些变量,以使得每次启动 Emacs 的时候,都能够自动地设置这些值。要在 .emac 文件中设置变量,可以使用 setq
函数,如下所示:
(setq VARIABLE VALUE)
(2)可以将自定义的绑定放在您的 .emac 文件中,以使得在您每次启动 Emacs 的时候它们都是可用的。
例如,如果您的 Del 键有问题,那么您可以在 .emac 文件中包括下面的内容:
;; Make Del delete the character at point. (global-set-key [delete] 'delete-char) |
并且您可以包括清单 8 中所描述的任何一对代码,以便自动地为每个 Emacs 会话重新定义您的 Home 和 End 键。
清单 8. 在 .emac 文件中重新定义 Home 和 End 键
;; Make Home and End move to the beginning and ending of the buffer (global-set-key [home] 'beginning-of-buffer) (global-set-key [end] 'end-of-buffer) ;; Make Home and End move to the beginning and ending of the line (global-set-key [home] 'beginning-of-line) (global-set-key [end] 'end-of-line) ;; Make Home and End move to the beginning and ending of the sentence (global-set-key [home] 'backward-sentence) (global-set-key [end] 'forward-sentence) |
(3)还可以在您的 .emac 文件中打开或者关闭模式。
因为大多数模式都可以作为切换进行调用,所以在其后紧跟一个正参数可以打开它们,而紧跟一个负参数可以关闭它们。您还可以使用下面这种格式:
(MODE-NAME VALUE ) |
例如,您可以使用下面的操作自动地关闭菜单条:
;; turn off the Emacs menu bar (menu-bar-mode -1) |
通常,当给定一个正整数值或者 t
(表示“真”)的时候,将打开模式;当给定一个负整数、零或者 nil
值的时候,将关闭模式。
下面所有的行都可以完成相同的任务:它们设置 global-font-lock-mode
,该模式将自动地打开所有缓冲区的 Font Lock 模式:
(global-font-lock-mode) (global-font-lock-mode 1) (global-font-lock-mode t)
(4)有时,当 Emacs 需要从您这里得到一个回答的时候,您不得不键入单词 yes
或者 no
,并在其后使用 Enter 键。
当您很清楚自己所执行的操作时,这个操作就可能会和某些窗口应用程序要求您在弹出窗口中单击 OK 以验证您刚刚指定的命令一样令人讨厌。
为了简化这个过程,以便只需要按 Y 或者 N 键即可,可以将下面的内容添加到您的 .emac 文件:
;; eliminate long "yes" or "no" prompts (fset 'yes-or-no-p 'y-or-n-p) |
这种技术使用了 fset
函数,以重新定义给定的函数。
5 emacs支持customize
函数,它可以用交互方式完成对emacs的设置
https://www6.software.ibm.com/developerworks/cn/education/aix/au-emacs6/section7.html