Emacs(二)——移动光标

Emacs 之移动光标

行末换行问题

在输入一行文本的时候,如果到达了屏幕显示画面的右端,会有两个选择。可以按回车键转到下一行,也可以继续输入下去。如果输入一个长句子没有按回车键,Emacs 会在到达显示画面右端的时候,自动在这一行的末尾加上一个反斜线(\)并转到下一行去。这个反斜线字符不是一文本的一部分;它们只是一种标记,提醒显示画面里的下一行其实是属于上一行。在每一行的末尾都按一次回车键比较麻烦,而反斜线看起来又比较乱,Emacs 提供了一种比较好的选择——自动换行模式(auto fill mode),这种副模式把在什么地方断行的工作交给 Emacs 去决定。Emacs 会在句子接近末尾的时候等待你输入一个空格,然后它会把下一个单词(有时是好几个单词,这种应该是由于单词间没有空格,Emacs 是按照空格来区分单词的)转到下一行。这种行为有时候也被称为“字换行(word wrap)” 功能,在录入一大段文字时非常有用,因此,自动换行模式 与文本模式(text mode) 通常是形影不离。但是,在编程的时候,良好的编码格式与习惯有利于代码的阅读与逻辑的组织,所以,编程时更倾向与人工换行。自动换行模式不会被默认得设置为 on,若状态行显示有 Fill,就说明已经是自动换行模式;若自动换行模式是关闭的,则可以使用命令 ESC x auto-fill-mode ENTER,把这个编辑缓冲区的自动换行模式设置为 on,但是,这只对当前的缓冲区有用。若要关闭自动换行模式,可以再次输入命令 ESC x auto-fill-mode ENTER

自动补全功能

Emacs 具有自动补全的功能,当输入一定的字母的时候,若可以唯一确定出一个命令,当你按下 TAB 键的时候,命令的其它部分会被 Emacs 自动补全;若有好几个待选命令,Emacs也会列出匹配全部相符的选项。例如:上一条命令,ESC x auto-fill-mode ENTER 可以使用自动补全输入。

在 Emacs 失去响应的时候

  • 如果 Emacs 对你的命令失去响应,你可以使用 C-g 来安全的终止这条命令。同时,这个命令也可以终止一条执行过久的命令。
  • C-g 还可以取消数字参数和只输入一半的命令。

光标的移动

移动光标最简单的方式是点击鼠标左键或者按下方向键。在 Emacs 中,可以使用键盘中的快捷键移动光标的位置。如果光标不能被移动,Emacs 会鸣叫并显示错误信息“Beginning of buffer(缓冲区头)”或者“End of buffer(缓冲区尾)”。但是,在缓冲区的最后一行按下“C-n”组合键,将会把光标移动到下一行,即等于给缓冲区增加一个新行。只有在此时“C-n”不仅把光标移动到下一行,还创建了一个新行。

键盘操作 命令名称 动作
C-f forward char 把光标向右移动一个字符的位置
C-b backward char 把光标向左移动一个字符的位置
C-p previous line 把光标向上移动一行
C-n next line 把光标向下移动一行
C-a beginning of line 把光标移动到一行的开始
C-e end of line 把光标移动到一行的结束
M-f forward word 把光标向右移动一个单词的位置
M-b backward word 把光标向左移动一个单词的位置
M-a backward sentence 把光标移动到一个句子的句首
M-e forward sentence 把光标移动到一个句子的句尾
M-} forward paragraph 将光标移动到下一个段落
M-{ backward paragraph 将光标移动到上一个段落
M-< beginning of buffer 将光标移动到所有文字的开头
M-> end of buffer 将光标移动到所有文字的末尾
C-v scroll up 向后移动一屏
M-v scroll down 向前移动一屏
C-l recenter 重绘屏幕,并将光标所在行置于屏幕*

注意:
1. Ctrl 一般对应的是对于字符的操作;而 Meta(Alt)键主要对应的是单词、句子等的操作,具有语言特性。
2. M-{ 等类似的需要按住 Shift 按键才能输出的字符,输入包含这些字符的命令时,需要按住 Meta(Alt)键,接着按住 Shift 键,最后再按一下对应字符,例如 “{” 。
3. M-a / M-e 对于汉语来说,会移动到下一个标点符号的位置。

Emacs(二)——移动光标

重复命令

  • Emacs 允许你重复同一个命令任意次数,在输入一个命令之前,你可以使用命令 “M-n” 来输入你希望这条命令重复执行的次数,例如 M-500 C-n,光标将向下移动500行。这条命令被称为 “digit argument”
  • 还有另外的一个方法,同样可以输入重复命令的次数:C-u(universal argument),你可以输入 C-u,然后输入数字,再输入命令,同样具有 M-n 的执行效果。不同的是 C-u 输入之后再输入数字,而且 C-u 后面不跟名令,默认的命令时将光标下移 4 行。

Emacs 命令所对应的键盘按键

Emacs(二)——移动光标