emacs学习(5) 自定义 Emacs 环境

本文介绍了如何自定义Emacs环境,包括理解并使用常见Emacs变量、定制键绑定、界面调整、启动文件(.emac)的运用,以及通过Emacs Lisp简化交互确认等,帮助用户打造个性化的Emacs工作框架。
摘要由CSDN通过智能技术生成

自定义您的 Emacs 环境

1 使用并了解一些常见的 Emacs 变量

Emacs 提供了许多影响并改变其行为的变量。表 1 列出了一些经常进行修改的变量,并描述了它们的功能。


表 1. 常见 Emacs 变量汇总

变量描述
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设置缺省的对齐风格。该值可能是 leftrightcenterfull 或者 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 框架侧边缘(放置滚动条的位置)的值:rightleft。如果设置为 nil,则关闭滚动条。其缺省值是 left
scroll-step 包含使用 scroll-downscroll-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 自定义界面

 

表 2. 常见 Emacs 界面函数汇总

函数描述
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

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值