**Emacs**笔记

Emacs笔记

Emacs快捷键

M 表示 Alt 键

M-p 是向上翻历史命令

M-n 是向下翻历史命令

C 表示 Ctrl 键

C-a 光标移动到行首

C-e 光标移动到行尾

拷贝 Command c 键同时按下

粘贴 C-y Ctrl 键 和 y 键 同时按下

可以自己修改配置文件,或者修改 slime.el 重定义

创建文件:

C-x C-f

Emacs 屏幕底部会显示如下:

Find file: ~/

输入的文件路径和名称如下:

Find file: ~/ECode/Markdown-doc/hi.lisp

默认保存在当前用户目录下,Mac系统是 /Usrs/admin/
回车,Emacs 就会创建一个名为 hi.lisp 的 Lisp 源程序文件,放在 ~/usrs/admin/Ecode/Markdown-doc/ 目录下。

Emacs 基础操作

基本文件操作

包括打开,新建,保存,另存为以及退出等比较常用的命令

C-x C-f 打开/新建一个文件

C-x C-s 保存文件

C-x C-w 另存为文件

C-x C-v 关闭当前缓冲区文件并打开新文件

C-x i 在当前光标处插入文件

C-x b 新建/切换缓冲区

C-x C-b 显示缓冲区列表

C-x k 关闭当前缓冲区

C-x C-c 关闭emacs

2.2 光标移动

这里边最方便的就是句首句尾和行首行尾,因为我的是笔记本键盘,上下左右主 要是用方向键,如果要是标准键盘的话,最好常用绑定键。

C-f 后一个字符 C-b 前一个字符 C-p 上一行 C-n 下一行 M-f 后一个单词 M-b 前一个单词 C-a 行首 C-e 行尾 C-v 向下翻一页 M-v 向上翻一页 M-< 到文件开头 M-> 到文件末尾

2.3 文本编辑

这里面包括了复制粘贴剪切删除等常用的操作命令。注意,在这里,移除包括了 剪切和删除两个概念,要区分清楚。

M-n/C-u n 重复执行后一个命令n次

C-d 删除后一个字符

M-d 删除后一个单词

Del 删除前一个字符

M-Del 删除前一个单词

C-k 移除一行

C-@ 设定标志位(主要是为了粘贴剪切以及删除使用)

C-w 移除标记区域的内容(剪切)

M-w 复制标记区域的内容(复制)

C-y 召回(yank)复制/移除的区域/行(粘贴)

M-y 召回更早的内容 (在kill缓冲区内循环)

C-t 交换两个字符的位置

M-t 交换两个单词的位置

C-x C-t 交换两行的位置

M-u 使从光标位置到单词结尾处的字母变成大写

M-l 与M-u相反

M-c 使从光标位置开始的单词的首字母变为大写

2.4 一些重要的命令

C-g 停止当前运行/输入的命令

C-x u/C-_ 撤销前一个命令(undo)

2.5 搜索

C-s 向后搜索

C-r 向前搜索

2.6 窗口命令

窗口命令比较常用,尤其是编辑多个文件的时候,你可以打开多个窗口,可以提 高编辑效率。

C-x 2 水平分割窗格 C-x 3 垂直分割窗格 C-x o 切换至其他窗格 C-x 0 关闭窗格 C-x 1 关闭除了光标所在窗格外所有窗格

2.7 帮助

C-h m 查看当前模式

C-h c 显示快捷键绑定的命令

C-h k 显示快捷键绑定的命令和它的作用

C-h f 显示函数的功能

C-h b 显示当前缓冲区所有可用的快捷键

C-h t 打开emacs教程

Emacs入门快捷键

打开emacs开始一个程序最基本操作:

1.打开Emacs,执行

$ emacs

2.建立一个新的程序文件. 按C-x C-f 然后在屏幕的底部出现minibuffer,光标提示你输入文件名称, 文件名称要带上后缀名,如hello.cpp。回车,然后开始编辑源代码。

3.编译代码。按Esc-x
输入:compile,出现minibuffer,提示你输入编译命令。
默认情况下,有个make -k出现在minibuffer中,删除即可
用命令g++ -o hello hello.cpp,回车后,出现一个编译结果窗口。

4.执行生成的结果文件。按Esc-x 输入:shell,回车后出现一个命令行窗口。 在其中执行命令 $ ./hello。

5.回到源码窗口。按 C-x 输入:b,出现minibuffer,提示你输入要换到哪个缓冲。 输入缓冲名称即可。若她提示的却生缓冲就是你要去的窗口,直接回车即可。

6.不想在minibuffer中输入任何东西,执行C-g,就离开了这个minibuffer。

7.杀死某个缓冲。按 C-x 输入:k,出现minibuffer,提示你输入是哪个缓冲。 输入名称,回车即可。

8.只保留当前光标所在的窗口,其他窗口关闭。按 C-x

输入1 (注意是数字1),相反,Ctrl+x 2,将打开两个窗口。

9.屏幕上出现多个窗口时,从一个窗口跳到另一个窗口,按 C-x o(字母O)。

快捷键:

emacs 的键盘命令通常包括control键(C)和shift键(M)

退出emacs :①使用组合键 C-x C-c ②使用快捷键 M-x 后 输入kill-emacs

C-g 退出一个正在运行的命令 或者 取消数字参数和值输入到一半的命令

C-z 最小化

C-v 移动到下一屏

M-v 退回至上一屏

C-l 重绘屏幕,并将光标所在行置于屏幕中央 (第二次使用该键 光标所在行移置屏幕顶端,第三次移置底端)

PS: Pageup Pagedown 也用来滚屏

C-f 向右移动一个字符

C-b 向左移动一个字符

C-n 移动到下一行

C-p 移动到上一行

M-f 一个词一个词的向前移动光标

M-b 一个词一个词的向后移动光标

C-a 将光标移至一行的首部

C-e 将光标移至一行的尾部

M-a 将光标移至一句话的首部

M-e 将光标移至一句话的尾部

M-< 将光标移至所有文字最开头

M-> 将光标移至所有文字最末尾、

C-u 先输入该快捷键再输入一个数字 再输入一个命令 执行该命令这个数字次

被禁用的命令 执行这些命令时,emacs会告诉你这个命令的功能,再询问你是否确定执行,确定按 “n”

—————————————————————————————————————————————

插入与删除

C-u 8 * 插入8个字符“*”

C-d 删除光标后的一个字符

M-backspace 删除光标前的一个词

M-d 删除光标后的一个词

C-k 移除光标到“行尾”间的字符

M-k 移除光标到“句尾”间的字符

C-y 将删除的文字重新召回(最近一次删除的文字)

M-y 找回再前一次删除的文字,再按再前

C-/ 撤销

C-x u 撤销

—————————————————————————————————————————————

文件

C-x C-f 寻找一个文件

C-x C-s 储存这个文件

缓冲区

C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同时打开多个文件

C-x C-b 列出所有缓冲区

C-x s 保存多个缓冲区

—————————————————————————————————————————————

主模式

输入 M-x text-mode Text 模式

lisp 编辑程序代码模式

C-h m 可以查看当前主模式的文档

用 C-l C-l 将本行带到屏幕的最上方

M-x auto-fill-mode 启动自动折行模式,打字超界时自动换行

输入 C-x f 并传递参数 20: C-u 20 C-x f 设定行边界

M-q 自动折行

——————————————————————————————————————————————

搜索

C-s 输入字符 向前搜索

C-r 输入字符 向后搜索

——————————————————————————————————————————————

多窗格

C-x 2 将屏幕划分为两个窗格,都显示同一文档

C-M-v 滚动下方的窗格

输入 C-x o(“o”指的是“其它(other)”)将光标转移到下方的窗格

(在上方窗格里)输入 C-x 1 关掉下方窗格。

C-x 1 只保留一个窗格

C-h k C-f 新建一个窗格

用下面的方法可以在一个新开窗格里打开文件:

--输入 C-x 4 C-f,紧跟着输入一个文件名,再用 <Return> 结束

可以看到你指定的文件出现在下方的窗格中,同时光标也跳到了那里

--输入 C-x o 回到上方的窗格,然后再用 C-x 1 关掉下方窗格

窗口管理

C-x 2 split-window-vertically 水平分割
C-x 3 split-window-horizontally 竖直分割
C-x 1 delete-other-window 只保留当前窗格
C-x 0 delete-window 关闭当前窗格
C-x o other-window 切换窗格
C-M-v scroll-other-window 滚动下一个窗格

—————————————————————————————————————————————

多窗口

M-x make-frame 新建窗口

M-x delete-frame 关闭选中的窗口

—————————————————————————————————————————————

帮助

C-h c 再输入一个快捷键 就会给出这个快捷键的说明

C-h f 解释一个函数。需要输入函数名

显示行号

m-x global-linum-mode

3 Emacs 基础定制

每一次emacs启动的时候,它将加载一个名为~/.emacs的Lisp代码文件,对该文件 进行编辑是一种常用的定制emacs的方式。

下面是一个典型的Lisp语句:

(setq column-number-mode t)

(setqline-number-mode t)

它的意思是在minibuffer上栏显示行列号。其中,括号表示这是一个lisp函数调 用,圆括号内第一个符号setq为emacs配置文件中常用的的函数,它为某个全局变 量赋值。该函数第一个参数为要设置的变量名,第二个数则是该变量的值。

下面讲到的每一行代码,你都可以直接拿到~/.emacs中使用。当你想要了解某一 行代码的作用时,可以把它复制粘贴到~/.emacs中,保存然后重启emacs就可以看 到效果了。

小技巧 当你编辑~/.emacs配置文件的时候,每一次要看到效果都必须重新 启动emacs,非常麻烦。你可以用emacs打开.emacs文件并加入你想 要的lisp代码后,使用C-x C-s保存,接着在minibuffer输入:M-x eval-buffer,它会立即生效。你可以试验一下,非常方便和简单。

emacs配置文件的基础

~/.emacs

(setq transient-mark-mode t)

前面的setq,是系统的关键字,表示给后面的变量赋值。t表示true,nil表示false

变量transient-mark-mode,表示是否开启一个辅模式。这个辅模式可以高亮显示被选中的文本。

(setq load-path (cons (expand-file-name "~/.emacs.d")

load-path))

这一行,表示设置load-path。这个load-path就是emacs的自定义库的加载路径。load-path (cons (expand-file-name "~/.emacs.d") load-path)是一句lisp语言,意思就是说,在原有的load-path的前面,追加路径~/.emacs.d。以后,我们只要把要加载的库(即.el文件)放到.emacs.d目录下面,emacs就会自动加载它了。

(require 'template)
(template-initialize)
这个是加载模版的时候做的。

(require 'template)表示调用template,
(template-initialize)表示调用了一个名称为template-initialize的方法。通过这两行,emacs就能加载模版了

3 Emacs 基础定制

每一次emacs启动的时候,它将加载一个名为~/.emacs的Lisp代码文件,对该文件 进行编辑是一种常用的定制emacs的方式。

下面是一个典型的Lisp语句:

(setq column-number-mode t)

(setqline-number-mode t)

它的意思是在minibuffer上栏显示行列号。其中,括号表示这是一个lisp函数调 用,圆括号内第一个符号setq为emacs配置文件中常用的的函数,它为某个全局变 量赋值。该函数第一个参数为要设置的变量名,第二个数则是该变量的值。

下面讲到的每一行代码,你都可以直接拿到~/.emacs中使用。当你想要了解某一 行代码的作用时,可以把它复制粘贴到~/.emacs中,保存然后重启emacs就可以看 到效果了。

技巧

C-c C-f打开.emacs文件

编辑完C-x C-s保存≈

接着在minibuffer输入:M-x eval-buffer,它会立即生效。你可以试验一下,非常方便和简单。

3.1 设置启动界面

每一条上面都有注释,我就不多说了。

;; 设置标题栏,我的设置为Welcome to Emacs world!

(setq frame-title-format "Welcome to Emacs world! ")

;; 禁用菜单栏,F10 开启关闭菜单

(menu-bar-mode nil)

;; 取消工具栏

(tool-bar-mode nil)

;; 取消滚动栏

(set-scroll-bar-mode nil)

;; 显示行列号,它显示在minibuffer上面那个杠上

(setq column-number-mode t)

(setq line-number-mode t)

;;关闭emacs启动时的画面

(setq inhibit-startup-message t)

;;关闭gnus启动时的画面

(setq gnus-inhibit-startup-message t)

;; 设置启动时窗口的长宽,下面为80*40

(setq initial-frame-alist '((width . 80) (height . 40)))

;;关闭出错时的提示声

(setq visible-bell t)

3.2 操作习惯

;;设置打开文件的缺省路径,这里为桌面,默认的路径为“~/”

(setq default-directory "~/桌面")

;;让 Emacs 可以直接打开和显示图片。

(setq auto-image-file-mode t)

;;防止页面滚动时跳动,

;;scroll-margin 3 可以在靠近屏幕边沿3行时就开始滚动

;;scroll-step 1 设置为每次翻滚一行,可以使页面更连续

(setq scroll-step 1 scroll-margin 3 scroll-conservatively 10000)

;; 当光标在行尾上下移动的时候,始终保持在行尾。

(setq track-eol t)

3.3 时间设置

;; 启用时间显示设置,在minibuffer上面的那个杠上

(display-time-mode t)

;; 使用24小时制

(setq display-time-24hr-format t)

3.4 绑定键设置

;; 把C-j绑定到到达指定行上

(global-set-key (kbd "C-j") 'goto-line)

;; 设置C->键作为窗口之间的切换,默认的是C-x-o,比较麻烦

(global-set-key (kbd "C->") 'other-window)

;; 改变Emacs要你回答yes的行为,按y或空格键表示yes,n表示no。

(fset 'yes-or-no-p 'y-or-n-p)

;;设置C-/为undo,M-/为set-mark

(global-set-key (kbd "C-/") 'undo)

;;设置M-/作为标志位,默认C-@来setmark,C-@不太好用

;;M-/本来对应zap-to-char,这里占用了 (global-set-key (kbd "M-/") 'set-mark-command)

;; 扩大或者缩小窗口(上下),Ctrl+{}

(global-set-key (kbd "C-}") 'enlarge-window)

(global-set-key (kbd "C-{") 'shrink-window)

3.5 全屏或最大化

3.5.1 全屏设置

(global-set-key [f11] 'my-fullscreen)

(defun my-fullscreen ()

(interactive)

(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_FULLSCREEN" 0))

)

3.5.2 最大化设置

(global-set-key [f12] 'my-maximized)

(defun my-maximized ()

(interactive)

(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)) (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))

)

4 Emacs 高级定制

这里所说的高级定制,基本上都属于比较重要的日常应用,比如说主题,w3m浏览 器,Irc,日程管理Org,版本控制Git,代码浏览Cscope。而像那些查看pdf,听 音乐以及煮咖啡的玩意,基本上是华而不实的东西,你要有兴趣,完全可以自己 去做,记住,Emacs提供无限可能。

4.1 开始前的一点说明

Emacs的插件一般都是一个以el为后缀名的文件, 把这个文件下载下来后放到一个 目录, 比如~/.emacs.d/, 然后执行下面这两条语句:

(add-to-list 'load-path "~/.emacs.d/")

(require 'pluginname)

这样该插件就安装好了。

4.2 Emacs Theme

其实主题非常重要,因为字体的颜色,背景光标等等都是你天天必须面对的,设 定一个合适的主题,就像一个舒服的狗窝,让你不愿意离开。

下面是我的Emacs主题截图:

4.2.1 下载emacs theme压缩包

4.2.2 解压

4.2.3 复制相应文件到.emacs.d/下

cp -r themes color-theme.el ~/.emacs.d/

4.2.4 在~/.emacs加上如下代码

;;将~/.emacs.d/添加到加载路径

(add-to-list 'load-path "~/.emacs.d/")

(require 'color-theme)

(color-theme-initialize)

;; 这个是你选择的主题,后面的calm forest就是它的名字,注意使用小写。

(color-theme-calm-forest)

技巧

打开Emacs后可以 M+X color-theme-select 选择你喜欢的主题,然后 将相应的名称写入.emacs中。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容