emacs学习笔记

来源:互联网 发布:树脂镜片 保质期 知乎 编辑:程序博客网 时间:2024/05/16 07:47

Emacs选项

+number Go to the line specified by number (do not insert a space between the "+" sign and the number). Thisapplies only to the next file specified.

-t file, –terminal fileUse specified file as the terminal instead of using stdin/stdout. This must be the first argument specifiedin the command line.

emacs -q 命令可以跳过加载自己的~/.emacs而进行启动

通过emacsclient来链接emasc server:首先启动emasc server模式: 方法启动emacs M-x server-start或者在自己的~/.emacs 里加入(server-start)来启动server

然后你就可以通过emacsclient filename来快速使用emasc 打开文件了,事实上,文件是在作为server的那个emacs里面打开的,而emacsclient将等待server编辑文件, 这时候你就可以转到server那里去编辑文件,编辑好之后用C-x #来关闭文件并通知emacsclient文件已经编辑完成,现在你也可以把自己的EDITOR变量设置成emacsclient而不用怕启动慢了

emacs 和emacsclient里面的区别总体上来说区别不大但还是有区别的:在emacsclient中你要用C-x #来替换C-x C-c 因为你不能关闭emacs server

实测emacsclient和emacs的区别emacsclient 以c/s 模式运行,也就是emacs会在后台作为一个daemon存在,新打开文件时,emacs只会加载该文件本身,而不会重新加载emacs的众多东西.

emacsclient notice:emacsclient 中C-c C-c 与C-c #区别 假若有多个终端打开同一个文件,则所有终端共享同一个文件,A终端修改的文件会实时的更新到B终端,且如果A和B同时向同一文文件中填入数据,那么emacsclient会做出合理的调配,这点请各位放心。C-c C-c只打关闭你所在终端打开的文件, 而C-c #则会关闭文件,这样就会关闭所有终端的emacs

How to configure to use emacsclient?alias es='emacsclient -t -a ""'#set emacs as default editorexport EDITOR="ec"

用此方法有个BUG,就是别的进程同时打开你所打开的文件,那么当那个进程关闭改文件时,你所在的文件也将同时关闭,不过作为个人使用,这些工呢过呢已经满足就

快捷键盘文件操作:C-x C-f: 打开一个新文件C-x C-v 读入一个文件替换掉用C-x C-f打开的文件C-x i 把文件插入到光标的当前位置C-x C-s :保存文件C-x C-c :退出C-x C-w :另存为

C-a : 光标移动到一行的开始C-e : 光标移动到一行的结尾M->: 跳至文件尾M-<: 跳至文件头

M-g g : 跳转行C-x k : 删除缓冲区C-x b :选择当前窗口的缓冲区C-x C-b 选择所有缓冲区C-x C-q : 将缓冲区换成只读C-x C-q :交替只读或可读C-x 2 :将窗口平分为2C-x 3: 将窗口竖着平分为2

C-f 后一个字符C-b 前一个字符C-p 上一行C-n 下一行M-f 后一个单词M-b 前一个单词C-v 向下翻一页M-v 向上翻一页C-a 移到行首C-e 移到行位

C-x ^ :加高当前窗口C-x } :加宽当前窗口

C-~ :标记文本块M-w :复制所选择的文本块C-x C-x :交换插入点和文本标记的位置C-w :删除文本块C-y :粘贴文本块C-t :交换2个字符的位置,将要光标放在要交换的字符处M-t :交换2个单词的位置

拷贝一行的方法:C-a, C-~, C-e, C-n, C-y

M-u :将光标放在要修改的单词前面,然后执行该命令M-l :同上,将单词转换为小写

M-c :将光标放在第一个字符处,然后执行此命令,则会将改单词第一个字母大写如果发现刚输入的单词有错误,可以在以上几个命令的前面加上M–,则只会对单词的前半部分进行修改Emacs 会在第一次保存某个备份文件的时候创建一个备份文件C-g : 放弃当前命令#filename# :自动保存的文件名

查找和替换查找C-r :向前查找C-s :向后查找C-s C-w :把光标位置处的字符串用作查询字符串C-s C-y :把光标位置到行尾之间的字符串用作查询字符串C-s C-s :重复刚才的查询操作

替换M-x replace-string RETURN 再输入要查找的字符串 按下回车然后输入替换的字符串(查找&替换全部)

M-% 输入需要替换的string然后按回车再按将要替换的string再按回车,然后按空格或者y 进行单个替换C-x ESC ESC :会调出最后一次执行的命令C-p :察看前一条命令

怎样区分大小写: 变量case-fold-search决定查找操作是否区分大小写set variable只能临时的改变emacs的行为怎样设置case-fold-search呢M-x :set-variable RETURN case-fold-search RETURN nil(nil: 区分大小写. on: 不区分大小写)

word$做一次正则表达式查找,查找的是独占一个文本行的单词M-x ispell-buffer RETURN :拼写检查,按空格跳过此检查处,如果再次遇到这个单词而它确实拼写正确,则键入i,将它插入数据字典中

C-s M-p :查询刚才查询过的单词

缓冲区和窗口:C-b : 可以创建一个新的编辑缓冲区或者打开一个已经存在的编辑缓冲区C-b RETURN :立即进入上一此的缓冲区,当然前提是没有进行任何操作M-x rename-buffer :重新命名编辑缓冲区

当编辑多个缓冲区时,C-x s :emacs 会依次询问是否保存每个缓冲区,回答y保存,n不保存, !键将无条件保存所有编辑缓冲区如果只想保存当前编辑缓冲区,键入 .

C-r, 将编辑缓冲区变为只读

C-x k :删除编辑缓冲区

C-x C-q : 将编辑缓冲区变为只读

编辑只读权限的文件方法:C-x C-w ,将文件另存一份,C-x C-q : 将文件变为可写

复制块方法:M-~, M-w,M-y

窗口操作:C-x 2 :上下排列窗口C-x 3 :垂直分割窗口emacs dic int :emacs将把这2个文件分别显示在2个水平的穿口中

C-x <左推当前文本C-x >右推当前文本

M-n C-x o :沿顺时针方向依次移动n个窗口

2个窗口分别打开2个文件,从一个文件拷贝一行到另一个文件方法:C-k, C-x o,M<,C-y RETURN

C-x 0: 删除所在的窗口,C-x 1: 删除其他窗口C-x 上下加大当前缓冲区, C-x }加宽当前缓冲区C-u C-x ^ 大步上下加大当前缓冲区

C-x - :将窗口缩到缓冲区的大小C-x + :使所有缓冲区窗口变成同样大小

M C-v :卷动下一个窗口的内容C-x 4 f :在另一个窗口中打开一个文件,若没有窗口则会自动创建一个C-x 4 b :………………另一个编辑缓冲区

C-x r m :设定书签 (注意:可以在别的文件中进行操作)C-x r b :回到书签的位置,可以输入前几个名字然后按下TAB键M-x bookmark-rename :书签重命名M-x bookmark-delete :删除书签

对书签进行操作:C-x r l :进入书签操作界面进入之后:d 给书签加上待删除标志x 删除书签s 保存书签v emacs会把标记过的书签都打开在多窗口中m 给书签加上待显示标记如果只想进入一个带书签的文件,可以直接键入v 而不用给书签加上待显示标记

与书签有关的其他操作:M-x bookmark-insert :把书签标记的文本插如到当前光标处

emacs工作环境M ! :执行一条shell命令 (配合C-x 1 关闭此窗口),输出结果放在*shell command output* 编辑缓冲区中

emacs shell 很有意思的功能例如对321进行排序,操作顺序:M-h M-| 输入命令sort RETURN

C-u M-! 直接将shell输出结果放在当前缓冲区 而不是放在*shell command output*中

M-x send-invisible :口令字符串不会显示C-c C-z :shell模式中挂起程序M-p 检索前一个命令M-n 检索后一个命令

shell mode下的命令:C-c C-c :中断当前作业C-c C-d :送出EOFC-c C-o 删除最后一条命令的输出C-c C-z 挂起程序C-c C-r 将输出命令的第一行放到穿口顶部C-c C-e 将输出内容的最后一行放在窗口的底部,技巧可以将光标直接移动到最后一行的shell提示符末尾C-c C-p 移动到前一条命令C-c C-n 移动到下一条命令

M-p :检索前一个命令M-n :检索下一个命令

C-x d 进入目录编辑模式

日历和时间相关:M-x display-time :显示时间M-x calendar :显示日历iy iwid 在管表处的日期处插入日记条目d 显示在光标处的日记条目s 显示整个日记条目pd 显示今天是本年度的第几天q 退出日历功能a 显示日历画面中的3个月里的节日情况h 显示今天的节假日m 突出显示日记条目

如过另一个端口打开的是A文件,你再另一个端口打开的是B文件,那么你要是切换到A文件,并且要关闭A文件就会报:no Server buffers remain to edit错误, 那么你需要这么做才能关闭es, C-x 5

注意打开文件和打开编辑缓冲区是有区别的哦

Emacs计算器C-x * c :进入计算器

进入emacs mode " 会进入代数运算模式技巧:1 RETURN 2 RETURN 3 RETURN + RETURN + RETURN可以连续进行相加

阅读技巧:emcas file 后进入modeview-mode ->test-mode 或者其他view-mode基本操作:u 上翻半屏d 下翻半屏spcace 下翻一翻

显示行号技巧:先进入主模式:c-mode 然后再进入非主模式linum-mode 这样主模式和非主模式就都会生效但如果先进入非主模式后进入主模式 则非主模式就会失效

emacs 自动换行方法:1、M-x:customize-option;2、输入truncate-partial-width-windows,使用过程中为防止命令拼写错误,可以用Tab键补齐;3、将设置页面中的参数改为off,然后点击保存按钮(save for furture sessions),再点击finish按钮。

若出现"Cannot save customizations; init file was not fully loaded" 错误,pls do this:

If we look at at the source for custom-save-all in cus-edit.el we find:

(defun custom-save-all () "Save all customizations in `custom-file'." (when (and (null custom-file) init-file-had-error) (error "Cannot save customizations; init file was not fully loaded"))

So it would appear an error is occurring when your init file is being loaded. Try starting emacs with the –debug-init option which enables the Emacs Lisp debugger to help you find the errors in your init file.

Then every thing is ok

Q:在org-mode中没有自动换行,实现方法参看Emacs org mode学习笔记A:修改配置文件SUBDIRS.EL或.emacs,加上一句即可(add-hook 'org-mode-hook (lambda () (setq truncate-lines nil)))

Q:怎样在org-mode下设置自动缩进A:M-x org-indent-mode或者

emacs下浏览网页

  1. cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m
  2. cd emacs-w3m
  3. autoconf
  4. ./configure –prefix=/usr/local/src/emacsplugins/emacs-w3m-1.4.4/
  5. 进入emacs 输入M-x w3m即可

emacs 去掉最后换行符 \ 方法:;; do not automatically append a newline at the end of file(setq require-final-newline nil)But you'd better see the description of this var youself, since there are some subtle details you should know and handle if you want to always guarantee the behavior you want.

在emacs下浏览网页常用快捷键F前进,B后退,S列出历史页面, M-s显示曾经打开的会话和当前的会话,m在新标签页中打开光标处的衔接,g 在新标签也中打开用户新输入的衔接s启用自定义搜索引擎来搜索。r重新加载当前页.

w3m 最让人喜欢的功能是它允许在emacs里随时去访问任何一个URL地址,假设你在阅读文档时遇到一个url,并且你想去那里看看,那么你根本不需要推出emacs去启动一个浏览器。只要把光标移动到那个url处,然后再输入:M-x w3-follow-URL-at-pointRETURN 命令,就能让emacs把该URL处的资源去回来。

要想把当前页面的URL添加到收藏夹里,请按下a(命令是:w3-hotlist-add-document),w3将把该URL保存到收藏夹里,而她的名字就是当前主页的标题名称,如果不喜欢可以用"M-x w3-rename-hotlist-entry"命令给它另外取个名字.

Table of Contents

  • 1 emacs w3m 操作完整版
    • 1.1 用emacs-w3m理由
    • 1.2 基本操作
    • 1.3 页面操作
    • 1.4 书签操作
    • 1.5 焦点操作
    • 1.6 使用百度谷歌搜索
    • 1.7 其他重要操作
      • 1.7.1 good news:
      • 1.7.2 现实链接编号
  • 2 org-mode
    • 2.1 大纲
    • 2.2 轻量级标题预言
  • 3 可以导出其他格式
    • 3.1 轻量级标记语言
  • 4 3.3 段落
  • 5 登陆irc服务器聊天
    • 5.1 命令

1 emacs w3m 操作完整版

1.1 用emacs-w3m理由

  1. 平时在emacs里面编辑文档的时候,经常要上网查询一些资料,如果再打开firefox或者谷歌浏览器,不仅费时费力,而且经常会出现一个问题,就是浏览器和emacs两者的窗口经常相互干扰:

当我编辑文档的时候看不见浏览器里面的内容,而当我看浏览器的时候又无法编辑文档。

  1. w3m是个文本浏览器,当我看到网页里面合适的内容,可以方便的复制粘贴(我可不提倡抄袭哦^_),这一点放在firefox或者谷歌的话,就得用鼠标一阵左右键了
  2. 这个是最重要的,生活在emacs里面是我的追求,尽管不乏偏执,但是这仍旧是一种追求,所以w3m必然不能缺少

1.2 基本操作

完整的emacs w3m快捷键使用q: 挂起Q:退出C-x k n RET 关闭第n个buffer, 若什么都不输入则关闭当前bufferU:打开URLv:打开文件(Bookmarks Aaron.bookmark),查看书签G: 在新的标签页中打开URLg:在当前标签页中打开URLS:用googl进行搜索(自定义的搜索引擎)s: 历史(当前标签页的)H: 主页R: 刷新B 返回N 前进(RET)RET: 打开衔接\ 查看源代码= 查看头信息u 复制链接地址到剪贴板c 复制本页地址到剪贴板M-i 保存当前位置图片T 显示图片M-[ 缩小当前图片M-] 放大当前图片I 用外部查看器显示当前图片

1.3 页面操作

C-n 向下一行C-p 向上一行C-f 向前C-b 向后C-v 向下滚屏M-v 向上滚屏> 向右滚屏< 向左滚屏, 向左滚一格. 向右滚一格C-c C-w 删除当前页C-c M-w 删除其他页

1.4 书签操作

a 添加当前页到书签M-a 添加该URL到书签C-c C-t 复制当前页到新标签C-c C-p 上一个标签C-c C-n 下一个标签

? E 编辑书签? C-k 删除书

1.5 焦点操作

M-g 跳到第n行C-c C-@ 标记当前位置C-c C-v 跳到上次标记的位置TAB 下一个衔接M-TAB 上一个衔接

1.6 使用百度谷歌搜索

在出现的搜索框回车,然后在buffer会出现TEXT,在它后边输入你想要搜索的东东,然后回车,它就会出现在搜索框,之后再点击搜索的图标即可。其它的类似的搜索都可以这样办,你可通过这种方式登录chinaunix

1.7 其他重要操作

M 用外部浏览器打开当前页面M-M 用外部浏览器打开当前URLC-c C-k 停止载入C-x C-w RET; ~/.w3m/pages/myfirstpage.org

eg:在emacs w3m下键入a, 然后会有session加入你想要保存到的文件夹的名字即可。如果想访问该文件夹只需要键入v,然后进行相应操作即可

1.7.1 good news:

如果在浏览网页时很喜欢这个网页中的内容那么你可以这么做:C-x C-w RET; ~/.w3m/pages/myfirstpage.org

1.7.2 现实链接编号

进入 w3m-lnum-mode, M-x w3m-lnum-mode; 按f显示链接编号

emacs org-mode学习


2 org-mode

2.1 大纲

正在编写大纲

2.2 轻量级标题预言

3 可以导出其他格式

注意:

  1. * 要位于每行的行首
  2. * 之后要有一个空格,然后再输入标题
  3. 连续几个*就表示是几级大纲, 最多支持10级

TAB 循环切换光标所在大纲的状态, (三种状态:折叠,打开下一级,打开全部)C-c *:将本行设置为标题

默认的大纲显示没有缩进,显得有些乱, 可以用M-x org-indent-mode切换到另一种显示方式如果想让某个文件默认用这种方式打开, 可以在文件头部增加:#+STARTUP: indent如果希望打开所有org文件都默用这种方式打开,可在emacs中配置

org-mode 创建 衔接:http://www.astro.uva.nl/~dominik on the webfile:///home/dominik/images/jupiter.jpg file, absolute path

对于文件衔接可以用::后面增加定位符的方式链接到文件的特定位置。定位符可以是行号或搜索选项。如:~/code/main.c::255 进入到 255 行~/xx.org::My Target 找到目标‘My Target ’~/xx.org/::#my-custom-id 查找自定义 id 的项

除了上述的自动衔接外, 还可以显示制定衔接,采用如下格式:a[description]link C-c C-l:创建或者修改衔接,可以引用已保存的衔接C-c C-o打开衔接

my-anchor[内部衔接]1显示图片(略)

3.1 轻量级标记语言

前面的大纲和衔接都是使用标记来定义的。比如github的README文档除了支持纯文本外,还支持丰富的轻量级标记语言,其中就包括Org.

粗体斜体

删除线—下划线_下标:H2 0上标: E=mc2等宽字: git 或者~git~

Org 能够很容易地处理 ASCII 文本表格。任何以‘|’为首个非空字符的行都会被认为是表格的一部分| Name | Pone | Age |

Peter123417Anna4321SAAAAAA

你可能认为录入这样的表格很繁琐,实际上你只需要书人员表头“|Name|Pone|Age”之后,按C-c RET就可以生成整个表格的结构,类似的快捷键还有很多C-c C-c 调整表格,不移动光标TAB 移动到下一区域,必要时新建一行S-TAB 移动到上一区域RET 移动到先一行,必要时新建一行

快捷键命令说明M-LEFT/RIGHT 移动列M-UP/DOWN 移动行M-S-LEFT/RIGHT 删除/插入列M-S-UP/DOWN 删除/插入行C-c - 添加水平分割线C-c RET 添加水平分割线并跳到下一行C-c ^ 根据当前列排序,可以选择排序方式

4 3.3 段落

对于单个回车换行的文本,认为其属于同一个段落。在导出的时候将会转化为不换行的同一段。如果要新起一个段落,需要留出一个空行。 这点与MediaWiki类似。3.4 列表

Org 能够识别有序列表、无序列表和描述列表。

无序列表项以‘-’、‘+’或者‘*‘开头。 有序列表项以‘1.’或者‘1)’开头。 描述列表用‘::’将项和描述分开。 有序列表和无序列表都以缩进表示层级。只要对齐缩进,不管是换行还是分块都认为是处于当前列表项。

同一列表中的项的第一行必须缩进相同程度。当下一行的缩进与列表项的的开头的符号或者数字相同或者更小时,这一项就结束了。当所有的项都关上时,或者后面有两个空行 时,列表就结束了。例如:

My favorite scenes are (in this order)

  1. The attack of the Rohirrim
  2. Eowyn's fight with the witch king
    • this was already my favorite scene in the book
    • I really like Miranda Otto.

Important actors in this film are:

Elijah Wood
He plays Frodo
Sean Austin
He plays Sam, Frodo's friend.

将显示为:

My favorite scenes are (in this order)

The attack of the Rohirrim Eowyn's fight with the witch king this was already my favorite scene in the book I really like Miranda Otto.

Important actors in this film are:

Elijah Wood He plays Frodo Sean Austin He plays Sam, Frodo's friend.

3.4.1 列表操作快捷键

为了便利,org-mode也支持很多列表操作的快捷键,大部分都与大纲的快捷键类似:快捷键命令说明TAB 折叠列表项M-RET 插入项M-S-RET 插入带复选框的项M-S-UP/DOWN 移动列表项M-LEFT/RIGHT 升/降级列表项,不包括子项M-S-LEFT/RIGTH 升/降级列表项,包括子项C-c C-c 改变复选框状态C-c - 更换列表标记(循环切换)

3.5 分隔线

五条短线或以上显示为分隔线。


跟特留尼西特握手 :苦差:薪水:逃不掉:

键入emacs -nw 然后执行C-h i,会有emacs最详尽的文档出现

5 登陆irc服务器聊天

M-x erc; irc.freenode.net; 7000, Aaron,kongwk, then OK!频道:#proglangdesign#emacs #linue#python

5.1 命令

/names [频道] see the user in the current channel/whois name see the detail of the people/whoami yourself/Who * see the people who join the current channel/join #homename/part #homename leave the home/away reason/quit leave the serve/invite username homename/query personal chat/list /help/flush termial the output/leave channel

C-h m 可以查看对应的mode的详细文档

原创粉丝点击