调教Emacs(完结篇)

Buffer

我記得剛開始用emacs,每次都被buffer嚇到:buffer, buffer,怎麼到處都是buffer?那我要怎麼編檔案(file)?

其實概略的說,buffer就是file。所以呢,每次看到buffer,你就想是file。那用我們平日的概念,就可以明白了。叫buffer更精確。為什麼呢?比方說你用XX文書處理,我們都用New去建一個新檔,還沒存的時候就叫什麼「未命名的檔案」之類的。其實,還沒存,硬碟都還沒紀錄下來,怎麼能叫檔案?所以,emacs叫buffer。

再深入一點,buffer的名字和檔案通常一樣,但也可以不一樣。還有呢,emacs的buffer可以有很多模式,有些buffer還真的不準備變成檔案的。

因此呢,buffer的函意比檔案廣。不過我們初學,就把buffer當檔案好了。

来自

buffer的快捷键

C-x b 切换buffer(要输入buffer名字)
C-x 方向键也可以切换buffer
C-x C-w 保存buffer(也可以看做是另存为)
C-x l : 显示文件(buffer)总行数
C-x 1 : 当前窗口最大化
C-x 2 : 上下两窗口模式
C-x 3 : 左右两窗口模式
C-x 0 : 关闭当前窗口(Buffer仍然存在)
C-x o : 切换窗口

mode

什么是mode

当我们启动某一文件时,Emacs会判断文件的类型,从而自动选择相应的模式。当然,我们也可以手动启动各种模式。先按M-x,然后输入模式的名称。

mode有什么好处

mode的好处是不同的mode里面有不同的功能,比如“C模式”里面的源码可以高亮,可以缩进。org-mode里面可以分层等。不同的mode对于不同的文件类型做出正确的操作。这就用着很爽了嘛。

怎样启动mode

一般来说Emacs是根据你的文件后缀名来判断你的文件类型,进而自动启动相应的模式。比如.py就启动python-mode,.c就启动c-mode等。如果你想自己启动某一模式:
比如启动“C模式”,就是M-x c-mode。直接按下M-x,然后按两下Tab键,你将得到所有可执行的命令,这里面当然包括所有的模式。因此,你要想不起来某个命令的名称,就用这个方法。
如果是perl就是, M-x perl-mode或者是M-x cperl-mode

块操作

emacs以C-x r开头的命令来进行矩形操作。先用C-space或者C-@设一个mark,移动光标到另一点,用以下命令进行列操作:

C-x r k 剪切一个矩形块
C-x r y 粘贴一个矩形块
C-x r o 插入一个矩形块
C-x r c 清除一个矩形块(使其变成空白)
C-x r t 在选定区域的所有列前插入样的字符

鼠标操作

按住鼠标左键移动 -- 标记文本块
鼠标右键单击 -- 将标记的文本块复制到剪贴板
鼠标左键双击 -- 标记单词
鼠标左键三击 -- 标记行

cua-mode

cua-mode支持的可视化块模式

除了emacs本身支持的列模式外,emacs还可以通过cua-mode支持一种可视化的列模式。在cua-mode下,按[C-return]会进入cua rectangle模式。在这个模式下可以通过鼠标点击确认起点,然后通过光标键来选中一个rect范围,这个rect会用另外的颜色显示出来。

之后我们 就可以很方便地对这个rect进行操作。比如[M-up],[M-down],[M-left],[M-right]可以移动这个rect,[C- return]可以取消这个rect,[C-space]可以退出cua-rect模式并激活普通模式下的选择。
cua-mode下可以用以下命令进行列操作:

直接输入字符: 在每行前(或后)都插入这个字符
[M-a]: 将rect中的文字左对齐
[M-b]: 用空格(tabs或者spaces)替换所有rect中的字符
[M-c]: 去掉所有行左侧的空格
[M-f]: 用单个字符替换所有rect中的字符(提示输入一个字符)
[M-i]: 对每行中第一个找到的数字进行加1操作(自动把0x开头的当作十六进制数字)
[M-k]: 剪切rect
[M-l]: 把rect中的内容全部转换为小写
[M-m]: 拷贝rect
[M-n]: 用一串自增的数字替换rect中的每一行(这个功能可以用来给每行编号)
[M-o]: rect的内容右移,选中的rect用空格填充
[M-r]: 用字符串替换符满足正则表达式的字符串
[M-R]: 上下反转
[M-s]: 把rect中的每一行替换为一个字符串(提示输入)
[M-t]: 把rect整个替换为一个字符串(提示输入)
[M-u]: 把rect中的内容全部转换为大写
[M-|]: 对rect执行一个shell命令

我的配置的Emacs的独有功能

说是独有功能其实也是很多配置文件拼凑起来的。只是之前介绍的都是emacs默认的东西。下面的功能对于大神来说都是很常见,我只是绑定了几个快捷键或者记录了几个常用的快捷键而已
怎样用我的配置的Emacs,

看这里

tabbar-mode

Emacs tabbar

看到上面图上面那一排像标签页的东西了么,这个就是tabbar-mode的效果。启动配置了我的配置Emacs就默认启动了。
这些像标签的东西都是buffer。

tabbar-mode切换buffer快捷键

M-n 下一个buffer
M-p 上一个buffer

ecb-active

Emacs ecb

哈哈有点IDE的感觉吧。

启动ecb

先打开一个你的源文件。
然后

M-x ecb-activate

就启动ecb了

使用ecb的好处是你可以在左边的第一个小窗口选择文件夹,第二个小窗口选择文件,第三个小窗口选择当前文件里面的函数,第四个小窗口选择你打开过的文件。

python-mode

只说一个 执行当前文件按

C-c C-c

有个bug,执行的python是Emacs启动的,如果python文件里面有中文,那在Emacs启动的这个python线程下执行会报错。编码问题,但是没有找到解决的方法。

c-mode or cc-mode

该模式下,tab被我替换成空格,一个tab设置为4个空格,缩进也是4个空格。

整理代码

有一个比较常用的就是格式整理代码
可以选择部分代码整理,也可以整理全部代码。这样你的代码缩进就会非常漂亮了。

C-M-\ 整理代码

跳入函数

但我们查看某个函数想知道它实现的地方的时候

C-M-0 跳到函数实现的地方
C-M-9 跳回来

高亮

这个高亮功能大爱

Emacs gao liang

看见这些花花绿绿没有,相同的函数或者变量是同一个颜色。非常好区分。
使用方法非常简单

C-f3 第一次标记颜色,第二次取消
f3   查找相同的下一个

快捷键补遗

S-方向键 可以在不同的窗口切换

完结语

零零碎碎,我把能一次想到的都一股脑的全部写完了。当然不可能面面俱到,比如强大如org-mode只字未提。而且大部份都是快捷键的说明而已。本来开始打算写调教Emacs系列能写十几篇。但个人思想上发生了一些变化,所以可能以后Emacs不会是主力编辑器了。

不过也指不定那天抽风的有写出调教Emacs第二季强势归来

写了两小篇在blog上挂着也不是事啊。就像写小说写了太监一样,不舒服。所以还是来完结一下。有始有终。做一个真男人。:)