目录
- 1. 文件操作
- 2. 文件管理
- 3. 编辑
- 4. 窗口操作
- 5. 跳转操作
- 6. Buffer操作
- 7. 基本配置
- 8. 编程相关
- 9. 自带工具
- 10. 帮助
- 11. 原理
- 12. 其他
- 13. WAIT/FORWARD FAQ
[31/139]([22%]) @study- 13.1. NEXT 前进后退?
- 13.2. DONE TAB标签栏?
- 13.3. DONE 如何删除一行
- 13.4. MAYBE/FUTURE 如何移动一行?
- 13.5. DONE 如何删除至行首?
- 13.6. DONE 如何save all?
- 13.7. DONE 只读切换?
- 13.8. DONE 如何删除备份文件,或者不使用自动备份?
- 13.9. DONE 跳转到当前buffer工作目录?
- 13.10. WAIT/FORWARD Emacs当前工作目录?
- 13.11. LATER 如何重做?
- 13.12. LATER 如何成块缩进?
- 13.13. LATER 如何创建空文件
- 13.14. NEXT 如何跳转至上次编辑内容?
- 13.15. DONE 如何save all?
- 13.16. DONE emacs如何加载插件?
- 13.17. LATER TAB标签显示?
- 13.18. LATER 跳至上次编辑的位置?
- 13.19. WAIT/FORWARD 插件在哪配置
- 13.20. DONE kill buffer?
- 13.21. DONE 直接执行lisp函数?
- 13.22. LATER 如何实现自动缩进?
- 13.23. WAIT/FORWARD 如何插入确定的缩进TAB?
- 13.24. NEXT 如何输入上次输入的内容或者重做?
- 13.25. DONE 交换行
- 13.26. WAIT/FORWARD 动态加载配置立即生效?
- 13.27. DONE 如何执行命令时在回显区快速输入和删除?
- 13.28. DONE 如何查看某一配置变量的值?
- 13.29. MAYBE/FUTURE 如何恢复默认配置?
- 13.30. WAIT/FORWARD 如何文件刷新?
- 13.31. DONE 如何显示匹配括号?
- 13.32. NEXT 关于Tab缩进
- 13.33. LATER 如何显示空白字符?
- 13.34. LATER 如何复制一行?
- 13.35. LATER 缩进提示线?
- 13.36. DONE 重命名当前文件?
- 13.37. MAYBE/FUTURE 如何表示当前文件名?
- 13.38. WAIT/FORWARD 宏录制
- 13.39. WAIT/FORWARD 如何块缩进?
- 13.40. WAIT/FORWARD C-/是Undo
- 13.41. DONE 如何操作目录
- 13.42. CANCEL 如何管理配置目录
- 13.43. LATER 如何定位光标下路径的文件?
- 13.44. LATER 如何按项目组织目录
- 13.45. WAIT/FORWARD 如何让Emacs在光标到达当前Buffer最后一行尾部不自动recenter?
- 13.46. LATER 考虑一下用el-get插件管理插件
- 13.47. MAYBE/FUTURE eshell如何操作?
- 13.48. WAIT/FORWARD 如何配置自动新开“弹出”窗口的分割方向?
- 13.49. LATER Emacs如何控制Pop分割窗口的大小?
- 13.50. WAIT/FORWARD emacs如何进行会话保存?
- 13.51. DONE Emacs背景配色设置?
- 13.52. WAIT/FORWARD emacs的光标滚动如何让其不在屏幕尾部自动滚屏到中间?
- 13.53. WAIT/FORWARD 如何控制鼠标滚轮滚动的行数
- 13.54. LATER emacs如何清除所有buffer?
- 13.55. LATER 配置调试
- 13.56. NEXT 不喜欢emacs新开"提示窗口"是垂直方向
- 13.57. DONE Emacs如何定制颜色?
- 13.58. LATER 如何设置撤销的次数?目前貌似撤销只有有限的几次
- 13.59. LATER 重复最近的命令
- 13.60. WAIT/FORWARD elisp library
- 13.61. WAIT/FORWARD Emacs自定义配置
- 13.62. LATER 默认启动xemacs的窗口大小
- 13.63. NEXT emacs-desktop的会话存储默认位置
- 13.64. NEXT 如何高亮?
- 13.65. NEXT Emacs如何进行特定模式下的按键绑定映射?
- 13.66. LATER 如何为当前的Emacs编辑器升级?
- 13.67. DONE Emacs撤销、重做和重复
- 13.68. NEXT Emacs 如何远程访问?
- 13.69. LATER 将emacs custom config变成手动的config
- 13.70. WAIT/FORWARD 恢复文件
- 13.71. LATER 无需远端安装emacs,用本地emacs直接访问远端,可否?
- 13.72. MAYBE/FUTURE Emacs 任务管理?
- 13.73. LATER 崩溃后下次启动自动提示回复文件的方式?
- 13.74. LATER Emacs如何粘帖复制文本到X剪切板中?
- 13.75. LATER Emacs中如何在require后卸载插件?
- 13.76. LATER 拼音输入法
- 13.77. NEXT Emacs为什么有时候缩进无法删除?
- 13.78. NEXT Emacs如何搜索光标下的内容
- 13.79. LATER Emacs如何格式化全部代码?
- 13.80. NEXT 为什么Emacs有时候无法删除缩进?
- 13.81. DONE Emacs如何反撤销重做?
- 13.82. WAIT/FORWARD emacs剪切板和x剪切板共享
- 13.83. DONE 完善自己的开发环境,代码跳转、扫描、定位等,不用每次都要手动配置
- 13.84. LATER Emacs 括号跳转
- 13.85. DONE 关于Narrow
- 13.86. LATER emacs如何搜索光标所在字符的内容
- 13.87. LATER C-x =
- 13.88. MAYBE/FUTURE 定义自己的Emacs环境
- 13.89. MAYBE/FUTURE 将emacs插件分层整理一下,最好能尝试一下新版本的emacs
- 13.90. NEXT Emacs如何撤销以及反撤销?
- 13.91. WAIT/FORWARD —— Emacs标签跳转------
- 13.92. LATER —— Emacs mark ring------
- 13.93. MAYBE/FUTURE 意外发现
ESC-`在minibuf打开菜单栏 - 13.94. NEXT 学习资源
- 13.95. LATER Emacs如何自定义按键映射不冲突
- 13.96. NEXT Emacs高级搜索
- 13.97. WAIT/FORWARD Emacs如何显示括号匹配?如何显示行号?
- 13.98. LATER 设置输入法
- 13.99. DONE 使用Emacs阅读代码
- 13.100. LATER emacs自动保存间隔
- 13.101. NEXT emacs如何替换文本?
- 13.102. LATER Emacs如何设置多重功能的按键?
- 13.103. NEXT Emacs如何切换最近buffer,而非只有一个最近buffer?
- 13.104. WAIT/FORWARD Emacs如何高亮多个单词?
- 13.105. DONE 如何在Emacs直接预览markdown效果?
- 13.106. MAYBE/FUTURE 如何执行脚本
- 13.107. NEXT Emacs崩溃后的恢复策略
- 13.108. NEXT emacs如何跳转到匹配的括号?
- 13.109. NEXT 一些基本操作
- 13.110. DONE emacs如何返回上次编辑的位置
- 13.111. NEXT Emacs如何定期自动保存文件?
- 13.112. DONE emacs打开文件等,如何实现部分匹配文件或者命令而非精确开头匹配
- 13.113. LATER 意外发现的
M-*和M-.是做什么的? - 13.114. NEXT Emacs代码折叠
- 13.115. NEXT 指定范围的批量替换
- 13.116. INBOX Emacs如何清除无用buffer
- 13.117. DONE emacs如何能够查看撤销树,里面包含时间信息?
- 13.118. WAIT/FORWARD 尝试更改emacs导出html的目录显示式样,采用浮动方式。
- 13.119. DONE emacs返回上次编辑的位置
- 13.120. LATER emacs添加函数,使得选中区域确定的缩进4个空格
- 13.121. DONE 非常需要撤销树上注明撤销时间和简要内容emacs
- 13.122. LATER emacs如何高亮单词
- 13.123. MAYBE/FUTURE emacs鼠标双击选词,配置成包括下划线
- 13.124. WAIT/FORWARD emacs evaluate orgmode block 自动回复?
- 13.125. WAIT/FORWARD emacs关于文件引用路径的问题
- 13.126. MAYBE/FUTURE Emacs绘图环境
- 13.127. LATER emacs如何方便地切换窗口
- 13.128. NEXT emacs导出时,无法支持中文文件名称链接
- 13.129. NEXT emacs如何对选中的块,无论是否在orgmode中都能自由地通过tab等方式来缩进?
- 13.130. LATER Emacs字体问题
- 13.131. LATER emacs 如何粘帖刚刚编辑的内容?
- 13.132. WAIT/FORWARD emacs技巧,拷贝文件路径
- 13.133. LATER gnus使用方法
- 13.134. NEXT emacs mark ring是怎么回事?
- 13.135. LATER emacs narrow相关
- 13.136. LATER emacs按键映射是否冲突?
- 13.137. LATER emacs自动保存,提交至git
- 13.138. LATER emacs 寄存器复制粘帖
- 13.139. LATER 粘帖如何指定寄存器?以及如何对
M-y使用最近频率调整?
这里是学习Emacs过程记录的笔记,可供日后查阅以及参考。
简单的emacs操作提示,不做过多解释。心中的疑问放在后面。
M可以是<ALT>或者<ESC>。 <Delback>=<Backspace>=
1 文件操作
启动emacs
输入如下内容:
$emacs $emacs -nw
另外,启动之后,在键盘上键入
q跳过系统欢迎的信息.打开目录
输入
C-x d之后可输入具体路径,如果直接回车则默认打开当前buffer文件所在目录。新建目录
输入
M-x make-directory然后输入路径,回车。新建文件
输入
C-x C-f然后输入路径,写文件(这样不创建新文件)。载入一个文件
输入
C-x C-f之后输入路径,回车。其实打开的是对应文件的一个buffer,每个文件对应一个buffer,buffer名一般就是文件名去掉后缀。
查看当前buffer所在的路径
M-x pwd重新载入当前buffer对应文件
输入
C-x C-v保存文件
输入
C-x C-s输入之后,再输入路径,回车。全部保存
输入
C-x s输入之后,会依次询问每个文件的是否保存,输入
y表示保存相应文件;n表示不保存;!保存所有;.保存当前buffer并退出询问;q直接退出询问;更多的信息可以用C-h来查阅。关闭文件
输入
C-x k输入之后,会进入一个交互命令,输入想要关闭的buffer名字,即可关闭对应的文件再回车,如果什么都不输入直接回车,则默认退出当前buffer关闭对应的文件。
退出编辑器
输入
C-x C-c
2 文件管理
Emacs自带一个文件管理器,为dired模式。
进入目录浏览
输入
C-x d输入之后,可键入要进入的目录,如果不选择直接
Ret那么会直接进入当前buffer所在目录。进入目录后,可以输入h查看帮助信息,查看回显区简洁帮助输入?进入dired模式之后,可以通过下面命令管理文件,此时Emacs可以做为一个文件管理器来使用。
2.1 目录显示
上一层目录
输入
^上下移动光标选择不同文件项
输入
n/p上下移动至下一个目录子项
输入
</>上下移动至被标记项
输入
M-{/M-}退出目录缓冲
输入
q刷新目录缓冲
输入
g切换名称日期排序
输入 =s=
使用View模式查看文件
输入
v, 会以只读方式显示文件内容另一个窗口查看文件
输入
o查看文件类型
输入
y跳转文件
输入
j,输入之后,会提示选择将要打开的文件路径复制文件名
输入
w
2.2 文件操作
对应位置创建目录
输入
+删除对应文件
对应行输入
D, 会提示是否删除拷贝对应文件
对应行输入
C, 会提示目标路径创建硬链接
对应行输入
H, 会提示目标路径创建软链接
绝对路径对应行输入
S,相对路径对应行输入Y, 会提示目标路径重命名文件
对应行输入
R, 会提示重命名的名称修改文件权限
对应行输入
M, 会提示修改成什么权限,比如777修改属组
对应行输入
G修改属主
对应行输入
O压缩解压缩
对应行输入
z执行文件
对应行输入
X新建文件
输入
C-x C-f
2.3 标记操作
2.3.1 删除标记
标记删除
对应行输入
d将所有备份文件标记为删除
输入
~将存盘文件标记为删除
输入
#对标记删除的文件执行删除
对应行输入
x
2.3.2 普通标记
普通标记
对应行输入
m普通标记所有可执行文件
输入
**普通标记所有目录项
输入
*/普通标记所有符号链接
输入
*@
2.3.3 正则表达式标记
正则表达式标记匹配名称的文件
输入
% m, 输入之后,会提示输入满足正则表达式待标记文件名称正则表达式标记匹配内容的文件
输入
% g, 输入之后,会提示输入待标记文件包含的满足正则表达式的内容正则表达式标记依次拷贝文件
输入
% C, 输入之后提示输入被拷贝文件满足的正则表达式
例如
:\(.+\).cpp
之后再输入目标例如在前面匹配的基础上输入: =\1.h
2.3.4 结合标记能使用的操作:
以下操作可以结合上述描述的普通标记和某些正则来使用,达到批量处理的目的。
删除文件
Dcopy
C重命名或移动
R改变用户
O改变群组
G改变权限
M符号链接
S硬链接
H压缩
Z复制文件名
w删除行,刷新后可恢复
k
2.3.5 其它
取消标记删除
对应行输入
u取消所有标记
输入
U将文件列表读写切换
输入
C-x C-q读写切换之后,底部会提示为
[(Editable Dired)],可以修改对应文件名等。
更多命令
参见 h 给出的帮助信息。
参考:Emacs文件管理
3 编辑
3.1 插入
插入其他文件
输入
C-x i
3.2 撤销与重复
这里列出最基本的,具体可以参考:Emacs撤销、重做和重复
撤销
输入
C-x u或输入C-/
重复操作
输入
C-u <数字> <操作>或输入C-<数字> <操作>这两种方法,通过
C-u <数字>或C-<数字>指定好重复次数之后,输入你想进行的操作,就可以重复相应的次数了。
3.3 标记
标记整个buffer
输入
C-x h- 标记块
标记块开始
定位到待移除的首部,输入
C-@(或C-<SPC>,如果不冲突),标记完成。此时底部有指示是标记状态。移除相应块
移动光标,这时候光标经过的地方会高亮,也就是被标记。
3.4 删除、移除、复制、粘帖
注意:这里的移除类似剪切可再次粘帖回来 、删除的内容不可粘帖回来。
移除当前行
输入
C-S-DEL, 这里的DEL就是Backspace。
移除至行尾,可粘帖回来
输入
C-k, 再次C-k会将换行符号移除。
删除至行首,可粘帖回来
输入
C-0 C-k或输入M-- C-k或C-u 0 C-k
删除光标前面字符
输入
<Backspace>, 删除之后,不可通过C-y来“粘帖”回来。
删除光标后面字符
输入
C-d删除之后,不可通过C-y来“粘帖”回来。
移除光标前至面第一个单词首
输入
M-<Backspace>会移除光标前面的内容至单词首部(单词和数字字符,没有标点和其他字符,如"<",">")。
移除光标后至第一个单词尾
输入
M-d会移除光标后面的内容至单词尾部(单词和数字字符,没有标点和其他字符,如"<",">")。
删除到指定字符
输入
M-z <char>输入
M-z之后再输入字符<char>,会删除光标到<char>之间的内容。
块移除
标记块后,输入
C-w。
块复制
标记块后,输入
M-w。
粘帖最近一次移除或复制的内容
输入
C-y, 输入之后,可以粘帖最近一次被移除的内容。
粘帖最近某次移除的内容
输入
M-y不断的
M-y会不断的变换遍历之前移除的内容(不是复制),直至选择到待粘帖的内容便可结束。
3.5 杂乱编辑
交换当前行与上一行的位置
输入
C-x C-t输入之后,会将当前行与前一行交换,并且将当前光标移动到两行的后面。
4 窗口操作
关掉当前窗口
输入
C-x 0
关掉其他窗口
输入
C-x 1
水平创建窗口
输入
C-x 2
垂直创建窗口
输入
C-x 3
切换窗口
输入
C-x o, 在各个窗口之间循环切换。
5 跳转操作
5.1 搜索
正向搜索
C-s
连续正向搜索
C-s C-s ...
逆向搜索
C-r列出匹配结果
M-x occur RET <search words> RET这里
<search words>是搜索词,输入M-x occur RET后会提示输入搜索词,输入<search words> RET后,会新开一个窗口显示匹配结果以及数目。
5.2 基本跳转
向前翻页
C-v
向后翻页
M-v
跳至指定行
输入
M-g g <line number>, 再输入待跳转的行号。
跳至缓冲区文件首
输入
M-<
跳至缓冲区文件尾
输入
M->
跳转到同一层次下一个括号结束位置
输入
C-M-n
跳转到同一层次上一个括号开始位置
输入
C-M-p
5.3 书签
创建"书签"
输入
C-x r <SPC>, 然后随便按一个键,做为书签名比如'a'
跳转到"书签"
输入
C-x r j, 输入刚才创建的书签"a",就会跳到你刚在的书签所在的那个光标处。
6 Buffer操作
查看所有buffer列表
输入
C-x C-b
切换至指定buffer
输入
C-x b输入之后,进入一个交互模式,输入指定buffer名称即可。如果直接回车,会在上次buffer与本次buffer之间切换。也可
C-鼠标左键。切换到前一个/后一个缓冲:
输入
C-x <Left>/C-x <Right>.关闭buffer
输入
C-x k会提示想要关闭的buffer,默认关闭当前buffer。
关闭3天内未使用的buffer
输入
M-x clean-buffer-list
依次询问式关闭指定(是否保存)的buffer
输入
M-x kill-some-buffers进入Buffer操作模式
输入
M-x buffer-menu输入之后,类似
C-x C-b会列出所有的缓冲,不同的是,这时候进入到一个Buffer Menu的模式,可以在其中对相应的缓冲进行各种操作,类似C-x d <Ret>之后浏览目录时的状态。 具体参见C-h f buffer-menu中的帮助信息。
7 基本配置
这里给出Emacs基本使用时可能需要配置的一些内容,不涉及复杂插件的相关内容。
这里配置文件大致做如下布局:
~/.emacs
是emacs配置文件的入口,一般保存整体配置信息,
~/.emacs.d
存放插件等具体配置子脚本。
8 编程相关
9 自带工具
9.1 文件比较
使用自带工具 ediff 进行文件、目录、三向等比较。
9.2 版本控制
10 帮助
查看帮助信息的帮助
输入 = C-h C-h =, 这样可以显示如何查询其他帮助信息。
查看某个按键序列帮助
输入
C-h k xxx输入
C-h k后会有一个交互,让你输入按键序列,输入xxx之后,会显示相应的按键绑定以及帮助信息。自定义绑定一个按键之前通过这条命令,可以确认是否被绑定的按键会发生冲突,亦可通过这个命令,在已有的基础上,添加自己扩展的绑定功能。
查看某个elisp函数的作用
输入
C-h f使用自定制的功能,带来的问题至少有:通用性降低,依赖性增强,与其他功能冲突可能性增加。所以之前使用vim,基本不会用太多的插件以及按键映射,大多数操作使用其默认的配置。但是对于一个通过自定制扩展而闻名的emacs来说,我觉得这一点可以有所改变。通用性降低这方面,我们可以通过将相关配置进行合理组织,然后通过版本控制或者其他方式备份,便于在其他机器上使用;依赖性增强,一方面通过对配置和插件备份可以解决,一方面经常总结文档,以及对相关内容的熟练程度也会让这个问题不了了之;与其他功能的冲突,我们可以通过帮助查看已有按键绑定以及被占用的功能,使用未被使用的做为扩展,由此避免冲突。
使用原生功能,以及使用自定制功能,是两种不同的理念。前者通用、简单,后者可扩展、高效,还有其他不同,但是各有所长,关键在于根据实际情况,使用最适合的方式来解决问题,方式因人而异,没有绝对的,我个人的倾向是:在vim倾向前者,在emacs倾向后者,但是emacs使用之时,尽量保持原有的功能而不改变成其它的,如果实在不行,可以扩展原有功能。
查看按键绑定
输入
C-h b
根据正则表达式模糊查找
输入
C-h a xxx, 这样会列出所有匹配xxx的帮助信息。
查看某前缀按键集合的帮助
输入
C-c C-h, 会查看C-c为前缀的按键绑定帮助,
查看某命令前缀的按键绑定帮助
输入
<命令前缀> C-h, 例如C-c C-x C-h会查看C-c C-x为前缀的按键绑定帮助。
查看info
输入
M-x info, 或者输入C-h i输入之后,会显示info手册,和linux的一样,不过在emacs中阅读更方便。
查看当前模式信息和按键映射信息
C-h m
退出帮助信息
输入
q
Emacs FAQ
输入
C-h C-f
11 原理
11.1 关于递归编辑
所谓的“递归编辑”是指递归编辑状态,由位于状态栏的方括号所指示,其中包含了用小括号来指明的模式名称。比如说,你有时可能会看到[(Fundamental)],而不是 (Fundamental)。(比如在用 M-% 进行交互式替换的时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式,这就是所谓的递归编辑。)
11.2 关于mark/region/active region/transient-mark-mode/Text Selection
内容主要参考 Emacs: What's Region, Active Region, transient-mark-mode? 大致如下:
mark
一个用户可以设置的位置,用来进行文本选择。通过调用
set-mark-command(即C-@)设置mark,在list代码中你可以调用 push-mark或者set-mark设置标记。region
最后一次mark的位置知道当前光标所在位置,这一段的区域。用户一旦在buffer中设置了mark,region就存在了。可以通过函数
region-beginning,region-end来获取region的位置。active region
当变量
mark-active为true的时候,region就是active状态。transient-mark-mode
transient-mark-mode也是emacs的一种minor mode,当emacs的
transient-mark-mode为on的时候,active region将被高亮, 当变量transient-mark-mode为true的时候,该模式就是on的状态,默认该模式是on的状态。因为默认为on,并且Buffer中始终有一个region,所以前面对active region需要用mark-active进行控制,防止文本中的region始终高亮。什么时候region被active?
当
set-mark-command被调用的时候,region就会变成active(高亮状态),当执行了一个命令后,一般region的状态就会被设置成inactive。总之,你用鼠标或者键盘设置mark之后,被选择的文本就会被高亮,你执行一些操作之后,文本高亮就被取消。什么是Text Selection?
Text Selection就是被选择的文本,一般与active region同义。Text Selection就是非空的active region,可以通过
use-region-p检测Text Selection, 这个函数其实检测的是三个内容:a.trasient-mark-mode是否为on;b.mark-active是否为true;c.通过 =use-empty-active-region来检测region非空。
11.3 关于自动临时保存和备份
11.3.1 临时文件
一般是在Emacs中编辑时,在编辑文件的同一个目录内生成一个以#file-name#这样的文件,这个文件会在我们保存文件之后被emacs删除。这个文件的作用是为了防止在进行编辑的时候异常退出造成的损失。
临时文件存在大致过程如下:
1. 在Emacs内使用[C-x,C-f]打开要编辑的文件(test-file.txt)
2. 在打开的buffer中编辑内容
3. Emacs自动侦测buffer是否更改,如果更改会自动Auto-Save
4. 此时我们能够在编辑的文件同一目录下看到临时文件为:
#test-file.txt#
5. 使用[C-x,C-s]保存当前buffer
6. 当前buffer中的内容被写入文件,#test-file.txt#消失——被Emacs自动删除
崩溃时恢复的方式
1. 打开要恢复的文件,如:test.txt 2. [M-x] 3. 输入:recover-file 回车 4. 确认恢复
关闭自动保存临时文件功能,在你启动的.emacs文件内添加下面这行
(setq auto-save-default nil) ;; default is t, close with nil
11.3.2 自动备份
第一次保存的时候,如果保存的文件已经存在,Emacs会自动将保存前的文件重命名作为备份文件,而备份文件使用的是一个“~”作为后缀(如:file-name~)。
备份文件默认仅会发生在Emacs第一次写入的时候,即,开启Emacs之后,第一次打开文件并保存的时候,编辑期间多次保存并不能产生多次备份动作。然而,下次重新打开Emacs,再次执行同样的动作的时候,同样在第一次保存时,Emacs是会将上次的备份文件覆盖的(如果有)。
大概的流程如下:
1. 打开文件,如:MitchellChu.txt 2. 编辑...(这涉及到临时文件的问题,忽略) 3. 在emacs内发出保存指令 4. emacs先将MitchellChu.txt保存为:MitchellChu.txt~ 5. 保存完成后,Emacs将当前buffer的内容写入MitchellChu.txt 注意:此时的MitchellChu.txt已经不再是原来的那个文件,但所有连接到原来那个文件的,现在被这个新文件接管。
取消该功能设置如下
(setq make-backup-files nil)
更多设置,比如拷贝、路径、多个备份版本等,可参考:
backup-by-copying version-control backup-directory-alist 等。
11.4 Emacs撤销、重做和重复
简单说来,撤销是取消上次的操作,重做是对撤销的撤销,重复是对上次命令进行重做。下面重点对撤销和重做进行叙述。
“Emacs中只有撤销,没有重做” 或许是初学者的迷惑,也或许让Emacs蒙受了"很烂的编辑器,怪不得很多人不愿意用"的评价。其实,真正的答案很简单: 撤销是取消上次的操作,重做是对撤销的撤销 对这简单的两句话若能真正理解,你或许便能知晓真正的答案。当知晓真正的答案之时,你或许会感觉到,Emacs如峰回路转般,让你不得不收回对它以前的无知评论,重新对它产生新的认识。不光是这个小小的功能,其实在整个Emacs的前进过程中,如果能坚持下去,你会遇到很多类似的境况,也许,这也是为什么Emacs的学习曲线不同于其它,是“螺旋”的吧。
这里给出众多Emacs学修中的一员,在经历众多Emacs道路中的困难之一,对其现象做一个简单的重现,希望能让没有使用过Emacs的朋友,能体会到一点使用它的感觉。
11.4.1 插件
通过undo-tree插件选择需要恢复的操作
C-x u 进入 undo-tree-visualizer-mode , p n 上下移动,在分支之前 b f 左右切换,t 显示时间戳,选定需要的状态后, q 退出。这是主要的操作,其它的自己摸索好了……
参考:http://www.dr-qubit.org/undo-tree/undo-tree.el 和 emacs 新手必看: undo-tree
11.4.2 标准操作
11.4.3 比较详细的解释
11.4.3.1 Emacs中所有命令均可undo
所有命令均可undo, 包括undo本身,所有命令emacs都一视同仁,所以:undo+undo=redo
emacs 把相同类型的操作,合并为一个事件。比如说往缓冲区里打字,也就是 self-insert-command,如果每次 undo ,只是撤消掉一个字符,那就太僵硬了,所以 self-insert-command 的操作,每20次合并为一个事件,一次 undo ,撤消掉20个字符。 而 undo 的猥琐之处在于,只要连续的 undo ,无论多少个,都是一个事件……当然,这也是必需的,不然你 undo 了20次之后,又突然开始 redo ……而恰巧这时又是夜深人静的话……
11.4.3.2 Emacs中撤销操作序列的表示方式
undo 之后想要 redo ,就要进行一个其它类型的操作,随便输入一个字符或者移动一下光标都可以,不过标准答案是 C-g 。
s1--s2--s3--s4
)
s3 u3--u4
/ | (
| \ s5--s6--s7--s8--s9
| \ )
| u5--u6--u7--u8--u9
\
s10----sn
假设 u3 表示 undo s3 。从 s9 开始 undo,顺着 emacs 的“undo蛇”往回走,到了 u3 的时候,就是 undo undo s3,也就是 s3 了,而这一串 undo,也成了“undo贪吃蛇”的一部分。虽然 emacs 保留了全部的操作状态,但是从 s10 返回 s1 却要将近20步,而普通的编辑器只要两步。
这个必需得动手实验后才能有一个直观的印象,按以下步骤操作: (g C-g) (u undo)
1g2g3g4guu5g6g7g8g9guuuuuu10(可以把end-of-line绑到空格代替C-g)
11.4.3.3 引入插件undo-tree来"改变"Emacs中的undo模式:
其实这种“undo蛇”完全可以表示成 undo tree。s10 到 s1 ,两步;再到 s4,四步(有一步是切换分支)……
s10----sn
/
s1--s2--s3--s4
\
s5--s6--s7--s8--s9
不知道 emacs 为什么没有使用这种方式,可能是因为选择分支之类的操作很难描述吧。
好了,不提这么伤感的事,现在有一个扩展叫作 undo-tree ,基本解决了这个问题。 undo-tree 安装使用都很简单:
;放到load-path中,配置文件中添加
(require 'undo-tree)
(global-undo-tree-mode)
由于篇幅所限,就不截图了
C-x u 进入 undo-tree-visualizer-mode , p n 上下移动,在分支之前 b f 左右切换,t 显示时间戳,选定需要的状态后, q 退出。这是主要的操作,其它的自己摸索好了……
11.4.4 官方文档
查阅Emacs C-h i 信息中有关Undo的内容,如下:
Any command other than an undo command breaks the sequence of undo commands. Starting from that moment, the entire sequence of undo commands that you have just performed are themselves placed into the undo record, as a single set of changes. Therefore, to re-apply changes you have undone, type C-f or any other command that harmlessly breaks the sequence of undoing; then type C-/ to undo the undo command.
亦可参考:http://www.cnblogs.com/wendellyi/archive/2013/08/29/3290366.html
11.4.5 总结
其实redo就是对undo的undo,undo会将本身当作被redo的对象,但是连续的undo之间不会被打断,(当然其中的每次undo仍然会视为一个change),通过 C-g 打断连续的Undo操作,再 C-/ 就实现了对上次的undo 进行 undo,其实感觉上,Emacs将一切操作线性化,即简化了设计,又符合人的思维次序,而通过undo-tree却将这个undo变成了树状结果,便于理解,但是实践上未必更实用。目前暂时不用相关的插件。
11.5 关于Narrow
Narrowing的意思是将焦点集中到buffer的指定区域上, 有助于集中精力到特定的段落上,而将无关信息屏蔽掉。
Narrow后,你能看到的内容就是被Narrow的部分,但是并非删除了其他的内容,而是将相应的内容隐藏了。
Narrow后,其他内容好像不存在了一样,正常的跳转/搜索操作也被限制在Narrow范围内。
Narrow后,能够看见的区域被称作可访问区域,当取消narrow的时候,其他不可见的区域也变回可见了。
主要命令:
- 将Narrow范围设定在光标与Mark范围之间
- 输入
C-x n n,其实一般也就是被选区域。 - 取消Narrow
- 输入
C-x n w - 将Narrow范围设定为当前页
- 输入
C-x n p - 将Narrow范围设定为当前函数
- 输入
C-x n d
具体可以参考 C-x n C-h 或 http://www.gnu.org/software/emacs/manual/html_node/emacs/Narrowing.html
12 其他
切换模式
输入
M-x <mode name>这里<mode name>是模式名称,自己输入,可以<Tab>补全。
只读切换
输入
C-x C-q输入之后,当前buffer会在只读以及可读写之间切换。
终止现在正在执行的命令
输入
C-g这个命令只能终止本层编辑正在执行的指令,当你处于
recursive edit level的时候,你就不能够利用C-g来取消命令了,那么你需要利用<Esc><Esc><Esc>(或者更多次)来取消。交互执行lisp命令并插入结果
输入如下命令序列:
M-x lisp-interaction-mode <lisp expressions> C-j
切换
lisp-interaction-mode模式之后,输入lisp表达式,C-j计算并插入结果。千万注意C-j的光标位置。交互执行lisp命令不插入结果
输入如下命令序列:
M-x lisp-interaction-mode <lisp expressions> C-x C-e
切换
lisp-interaction-mode模式之后,输入lisp表达式,C-x C-e计算并将结果显示在底部mini buffer中。千万注意C-x C-e的光标位置。
查看所有安装的包
输入
M-x list-packages
插入原样字符
输入
C-q <待输入字符>输入之后将会插入相应字符(包括控制字符),而不是执行字符对应的按键绑定命令。
进入elisp交互解释界面
输入
eilm统计region字符数
输入
M-=输入之前要先选中region.
以特定编码保存文件
输入
C-x RET f coding保存后,文件为
coding编码,f后可用TAB补全,列出可选编码。以特定编码读取文件
输入
C-x RET r coding以
coding编码重新读取文件,r后可用TAB补全,列出可选编码。以特定编码执行输入命令
输入
C-x RET c coding以
coding编码执行接下去输入的命令。
12.1 意外操作
这里列出平时意外操作发现的一些功能,可能会整理至合适位置。
快速文本块选择
输入
C-S-n/p/a/e或者可以表达为C-N/P/A/E好像可以进行块选择,按其它的按键会导致退出“选择模式”。
新开一行
输入
C-o, 默认输入这个命令可以可以在当前位置上面新开一行。
当前位置内容帮助
在光标单词处输入
C-h xxx直接回车默认会解释光标下的帮助内容。
选择标记整个buffer
输入
C-x h
将选择的数据块按照上行缩进(上一行缩进几个空格,则此处也缩进几个空格,而不是tab?)
选择后输入 =C-M-\=,如果上行没有缩进则自动缩进一个tabstop。其实选择块之后,直接Tab也会缩进。
13 WAIT/FORWARD FAQ [31/139]([22%]) @study
- State "WAIT/FORWARD" from
wait for all done
13.1 NEXT 前进后退?
- State "NEXT" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "LATER"
前进后退的插件已经基本阅读完毕,使用自定义markring不会影响已有的系统markring;可行,其他前进后退的更多文档可能需要借助系统的mark以及使用的经验。 - State "LATER" from "NEXT"
13.1.1 插件
使用recent-jump插件。
13.1.1.1 配置举例
;; set recent-jump (setq recent-jump-threshold 4) (setq recent-jump-ring-length 10) (global-set-key (kbd "C-o") 'recent-jump-jump-backward) (global-set-key (kbd "M-o") 'recent-jump-jump-forward) (require 'recent-jump)
13.1.1.2 常用操作
- 前进
C-o
- 后退
M-o
13.1.1.3 其他
对该插件可以自行修改其源代码,以定制什么情况下针对什么命令、多大举例进行跳转。具体参见插件的源码和文档。
;;; Commentary: ;; ;; sometimes, we start a big jump, e.g. go to the beginning of buffer, search, ;; page down etc, it is handy that you can go back to where you start. For ;; example, when we writing program source code, we ofter search for some ;; reference and go back to where you start and continue writing. But how can we ;; define "Big Jump". I can not find a proper hook for the big jump, so at last ;; I choose the pre-command-hook. Now what my defination for "Big Jump" is : ;; ;; 1. you issued some special command, it can be defined by ;; recent-jump-hook-commands ;; ;; 2. you jumped really much. that is you move more than `recent-jump-threshold' ;; lines.
13.1.2 链接的后退
跳转一次链接后,会记录上次链接。使用 C-c & 可以后退。具体需要仔细确认。
13.1.3 查找的后退
查找一个字符串,回车后,会记录开始查找时的位置。使用 C-u C-@ 可以退回查找前的位置。
13.1.4 输入 C-u C-@
13.2 DONE TAB标签栏?
- State "DONE" from "MAYBE/FUTURE"
- State "MAYBE/FUTURE" from "INBOX"
使用 tabbar 插件。具体参考相关文档。
13.2.1 下载地址
wget https://www.emacswiki.org/emacs/download/tabbar.el
13.2.2 关键配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;tabbar ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'tabbar) (tabbar-mode t)
13.3 DONE 如何删除一行
- State "DONE" from "NEXT"
删除一行输入 C-S <BS>
13.4 MAYBE/FUTURE 如何移动一行?
- State "MAYBE/FUTURE" from "INBOX"
- State "INBOX" from
13.5 DONE 如何删除至行首?
- State "DONE" from "NEXT"
输入 C-0 C-k
n或输入 M-- C-k
或 C-u 0 C-k
13.6 DONE 如何save all?
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "NEXT"
待整理至合适的位置。
输入 C-x s
参考: 文件操作
13.7 DONE 只读切换?
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "DONE"
需要转移到合适的位置。 - State "DONE" from "NEXT"
输入 C-x C-q
参见 其他
13.8 DONE 如何删除备份文件,或者不使用自动备份?
- State "DONE" from "NEXT"
具体参考:关于自动临时保存和备份 ;;disable auto backup file("xxx~") when save(default t). (setq make-backup-files nil)
;; all backups goto ~/.backups instead in the current directory ;;(setq backup-directory-alist (quote (("." . "~/.backups"))))
;;disable recovery file("#xxx#") when modify(default t) ;;(setq auto-save-default nil)
13.9 DONE 跳转到当前buffer工作目录?
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "NEXT"
待整理到合适位置 - State "NEXT" from "INBOX"
输入 C-x d
参考: 文件管理
另外,不知道在哪里看到的文章上讲 C-x C-j 可以用 dired mode 打开正在编辑的文件的所在目录,但是我的版本的 Emacs 居然没有这个快键,而且这个键没有绑定任何命令。 于是加了一段代码实现这个功能。
;; C-x C-j open the directory of current buffer (global-set-key (kbd "C-x C-j") (lambda () (interactive) (if (buffer-file-name) (dired default-directory))))
13.10 WAIT/FORWARD Emacs当前工作目录?
- State "WAIT/FORWARD" from "NEXT"
等待整理到合适的位置。
参考: 文件管理
当前buffer的目录, 输入 C-x d 。
设置默认工作目录可以如下:
(setq default-directory "/home/quieheart")
但是=default-directory= 是buffer-local,
参考:http://zhidao.baidu.com/link?url=ZDHfOcxIDLzxiCRDi2yEWusjiqu9NRag0IFU7J3KGYFMiibAGC_MVL5Tm-aFWaekODyF0uhXf0aDLVtyalqk74eKy6H_CoJWfNp1_mWD3Ci >> windows下的emacs怎么改按c-x c-f出现的路径。
C-x C-f 使用的目录是 default-directory 的值。default-directory 是 buffer-local variable, 用 setq 写在 .emacs 里面没什么用。
在没有与文件关联的buffer中default-directory 的值是启动emacs时的当前目录。所以你可以修改启动emacs时的当前目录(PWD)。
修改启动emacs的当前目录,有多种方法:
- 修改emacs快捷方式属性的起始位置为你希望的文件夹,路径有空格的要加双引号。
- 写一个bat/cmd脚本来启动emacs,该脚本内容:先CD到目标路径,然后执行emacs
如果当前buffer已经打开了文件,default-directory 会变成文件的所在路径。这个行为是不建议更改的。如果希望任何时候 C-x C-f 都是默认到某个目录,建议自己写一个函数来代替默认C-x C-f 绑定的函数。例如: (defun my-find-file () (interactive) (let ((default-directory "mnt")) (call-interactively #'find-file)))
(global-set-key (kbd "C-x C-f") 'my-find-file)
查看当前buffer所在的路径:
M-x pwd
13.11 LATER 如何重做?
- State "LATER" from "INBOX"
13.12 LATER 如何成块缩进?
- State "LATER" from "INBOX"
13.13 LATER 如何创建空文件
- State "LATER" from "INBOX"
13.14 NEXT 如何跳转至上次编辑内容?
13.15 DONE 如何save all?
- State "DONE" from "INBOX"
输入 C-x s , 根据弹出的提示选择待保存的buffer, !表示保存剩余的全部。
13.16 DONE emacs如何加载插件?
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "INBOX"
填写配置文件,待整理
下载插件,插件都是elisp脚本,一般自动加载都是修改配置文件,比如 recent-jump.el
将加载语句写入配置文件:
;;plugins (load "recent-jump.el")
或者
(require 'recent-jump) ;; back/forward
或者如果直接在当前会话中加载插件,可以到 *scratch* buffer中或者其他地方将加载语句写下来,然后则直接执行加载语句(在相应的语句结尾输入 C-x C-e )
具体可参考:elisp library
13.17 LATER TAB标签显示?
- State "LATER" from "INBOX"
13.18 LATER 跳至上次编辑的位置?
- State "LATER" from "INBOX"
13.19 WAIT/FORWARD 插件在哪配置
- State "WAIT/FORWARD" from "INBOX"
有emacs plugin相关文章,待整理可能需要整理到原理中。
~/.emacs
是emacs配置文件的入口,一般保存整体配置信息,
~/.emacs.d
存放插件等具体配置子脚本。
13.20 DONE kill buffer?
- State "DONE" from "INBOX"
输入 C-x k, 默认是当前buffer.
13.21 DONE 直接执行lisp函数?
- State "DONE" from "NEXT"
- State "NEXT" from "INBOX"
已有elisp函数: M-x <functionname>
自定义函数,在函数体结尾后执行 C-x C-e
13.22 LATER 如何实现自动缩进?
- State "LATER" from "INBOX"
13.23 WAIT/FORWARD 如何插入确定的缩进TAB?
- State "WAIT/FORWARD" from "NEXT"
如果有确定的答案,就直接给出一个简单的提示操作,或者关闭问题。
参考:关于Tab缩进
13.24 NEXT 如何输入上次输入的内容或者重做?
C-x z
13.25 DONE 交换行
13.26 WAIT/FORWARD 动态加载配置立即生效?
不重启 Emacs 让 .emacs 配置文件生效 有四个函数可以做到:eval-last-sexp,eval-region,eval-buffer 和load-file M-x eval-last-sexp 使.emacs中光标前的那一条语句立刻生效。 M-x eval-region 使.emacs中选中的region中的语句立刻生效。 M-x eval-buffer 使当前的buffer中的设置语句立刻生效。 M-x load-file ~/.emacs 载入.emacs文件,从而使其中的设置生效。 用 emacs 打开 .emacs 文件,C-x C-e 光标前面的运行一条语句。立即生效。 注意,有时候,需要重新载入当前buffer才能看见效果,有时候只对当前buffer起效果(可以查看相关配置的帮助说明)。
13.27 DONE 如何执行命令时在回显区快速输入和删除?
- State "DONE" from "INBOX"
回显区和正常buffer一样对待,它就是minibuffer. 更多参考:http://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer.html#Minibuffer
13.28 DONE 如何查看某一配置变量的值?
- State "DONE" from "INBOX"
查看该变量的帮助信息即可。输入 C-h v ,然后输入变量名称,默认为当前光标所在变量。
13.29 MAYBE/FUTURE 如何恢复默认配置?
- State "MAYBE/FUTURE" from "INBOX"
13.30 WAIT/FORWARD 如何文件刷新?
用于重新载入配置和文件变化。 http://blog.csdn.net/horstlinux/article/details/7857123 http://www.emacswiki.org/emacs/RevertBuffer 有四个可以revertbuffer的方法: M-x revert-buffer RET yes RET C-x C-v RET (global-set-key [(control c) r] 'revert-buffer) C-x RET r RET RET 除了手动设置revert-buffer,我们还可以自动设置,加入如下配置: (global-auto-revert-mode 1)
另外注意,
C-x C-v 是打开一个文件,取代当前缓冲区,缓冲区名字也改变了,就算再次重新打开相应的缓冲区文件,其之前对应的Agenda View也不可用了。
13.31 DONE 如何显示匹配括号?
- State "DONE" from "INBOX"
输入如下配置:
;;paren (show-paren-mode 1)
13.32 NEXT 关于Tab缩进
- State "NEXT" from "INBOX"
- State "INBOX" from
13.32.1 ——Time:------
13.32.1.1 文档中的描述
文档上关于indent的一些变量和函数,翻译过来大致意思如下:
C-h f indent-for-tab-command依赖于
tab-always-indent的设置,会为当前主模式的行或者区域进行合适的缩进,或者插入TAB。在大多数主模式中,如果光标在行缩进区域,它会在缩进后移动到第一个非空的字符上,否则光标会呆在当前文本的同样的位置。
如果给定了一个前缀参数,也会严格缩进以当前行首开始的整个balanced expression,来反映当前行缩进的变化。
如果
transient-mark-mode被打开,并且当前region是active的,会将当前的区域缩进(这个时候,任何前缀参数都会被忽略)。实际上被调用来缩进行的函数取决与
indent-line-function变量的设置。C-h v indent-line-function这个变量是buffer local的变量,表示用来缩进当前行的函数;
这个函数被调用的时候没有任何参数,如果函数在一个auto-indentation无法发生的地方被调用了(比如一个字符串的中间),这个函数将只会返回
noindent;我们可以设置这个函数来们组自己的需求,使得
TAB能够合适的被缩进,如果并非必须,最好不要重新绑定TAB按键。关于这个变量的值,比如我当前打开一个
emacs_tips.org文件,然后查看这个变量,可以看到如下:Local in buffer emacs_tips.org; global value is indent-relative
说明,在文件
emacs_tips.org中它的值为org-indent-line(这是orgmode的设置),其它位置默认为indent-relative。C-h v tab-always-indent如果为
t,则键入TAB会缩进当前行;如果为
nil,并且光标在左边的空白区或者行缩进区,则键入TAB会缩进当前行;如果为
nil,并且光标没有在空白或缩进区,则键入TAB会直接插入TAB字符;如果为
complete=,则键入 =TAB首先会缩进当前行,如果当前行已经缩进了,就尝试补全光标所在单词。有些编程语言有他们自己的变量控制这个行为,例如
c-tab-always-indent,这时候不会考虑这个变量。C-h v indent-tabs-mode这个是在C语言代码中定义的变量,设置成任何内容都会编程buffer-local的变量,这个变量做为文件局部变量保存,是安全的。
如果
non-nil,将会插入TAB.
13.32.1.2 参考:
关于emacs 缩进
有一篇不错的文章
参考:http://www.cnblogs.com/bamanzi/archive/2010/04/04/emacs-indent.html
主要包括了:默认的Tab行为、需要的行为、以及配置的方式
摘抄一些部分
- 不插入tab字符,不插入tab字符
- 每次缩进4个空格(setq default-tab-width 4)
- 缩进完全自行控制,不用syntax indentation来自动 (按语法格式化完全可以使用C-_)?
- 按TAB键时 如果选择多行,则缩进(行首插入多个空格) 如果未选择多行,当前光标在行首(不管是indentation区还是第一个字符上),则缩进 光标不在行首,插入多个空格(如果要将代码补齐考虑进来,则:如果光标在一个单词的末尾,则TAB键需要激活补全函数,如果单词后有一个空格,再按TAB键则添加空格)
- 按Shift-TAB键时 如果选择多行,则反缩进(行首删除多个空格) 如果未选择多行,光标在行首,反缩进 光标不在行首,发向移动光标或者什么也不做
从最后两条来看,原来的indent-for-tab-command不能满足需求,需要将TAB键绑定到别的函数才行。在网上搜了半天,找到这篇文章提供的方法正是我所要的: emacs, indent/unindent region as a block using the tab key http://ignaciopp.wordpress.com/2009/06/17/emacs-indentunindent-region-as-a-block-using-tab-key/
上面链接中的实现也考虑了,如果要对接其它的代码补齐,只需要将(hippie-expand nil)换成其它的即可,比如auto-complete的ac-start
缩进可能涉及到的配置可查阅
参考:http://crushon.blog.163.com/blog/static/21440415520121117105642762/
一些变量:
(setq indent-tabs-mode nil) (setq default-tab-width 4) (setq tab-width 4) (setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96))
总结 根据上面资料,默认的情况:
- 选择块之后
Tab会缩进相应的选择块 - 如果没有选择块
- tab-always-indent为t时
会依据当前语法体系缩进,而不管光标是在行首还是其它; - tab-always-indent为nil时
根据光标三种情况:
- 行首空白区(即在indentation区内),则取消所有缩进;
- 行首第一个非空白字符上, 则按第一次则语法缩进,第二次则插入tab字符或者空格(插入TAB还是空格则依赖于indent-tabs-mode设置);
- 不在行首,插入tab字符或者空格
- tab-always-indent为t时
另外,实践发现,默认情况下还有如下行为: Tab对应的空格长度,需要设置:tab-width 如果Tab缩进长度达到Tab长度,是否自动将达到Tab长度的部分转换为Tab字符,需要设置:indent-tabs-mode 多次tab时,光标依次缩进(前进)的长度,需要设置:tab-stop-list 每次tab会缩进上行缩进的长度(无论是否为Tab的整数倍)
需求: 每个人需求各不相同,大致需求如下: orgmode下,采用其默认行为即可,缩进方面可以?
- 选择块之后
13.33 LATER 如何显示空白字符?
- State "LATER" from "INBOX"
13.34 LATER 如何复制一行?
- State "LATER" from "INBOX"
13.35 LATER 缩进提示线?
- State "LATER" from "INBOX"
13.36 DONE 重命名当前文件?
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "INBOX"
参考dired相关命令
输入 M-x rename-file
或参考 文件管理
13.37 MAYBE/FUTURE 如何表示当前文件名?
- State "MAYBE/FUTURE" from
13.38 WAIT/FORWARD 宏录制
开始录制宏,用 C-x (
结束录制宏,用 C-x )
使用宏,用 C-x e 来使用宏。
可以利用C-u来重复使用100次这个宏,即命令C-u 100 C-x e。 C-x e e e …将宏重复。
命名宏
输入: M-x name-last-kbd-macro
输入之后,提示输入名称,输入名称后即可完成宏命名。
使用已命名的宏
输入: M-x yourmacroname
输入之后,便执行之前保存的"yourmacroname"对应的宏了,输入时候,输入的宏名支持Tab补全。
保存宏实现
输入: M-x insert-kbd-macro
输入之后,提示输入宏名,输入宏名称后(这里支持Tab补全),就会将宏的实现以文本的形式插入到你的当前文本中。
例如:
(fset 'ins_4spc_nextline "\C-n\C-a ")
这个宏实现是之前录制的,命名为"ins_4spc_nextline"的宏,如果将这个实现插入到你的emacs配置文件中,那么就可以通过 M-x yourmacroname 的方式来进行调用了。
n
重命名宏?
13.39 WAIT/FORWARD 如何块缩进?
- State "WAIT/FORWARD" from "NEXT"
如果有确定的答案就简单给出操作提示,或者直接关闭问题。
参考:关于Tab缩进
13.40 WAIT/FORWARD C-/是Undo
- State "WAIT/FORWARD" from "INBOX"
wait for move
13.41 DONE 如何操作目录
- State "DONE" from "INBOX"
参考:文件管理
13.42 CANCEL 如何管理配置目录
- State "CANCEL" from "DONE"
因人而异,可能会在将来整理相关文档。这里暂时不做深入回答。 - State "DONE" from "INBOX"
13.43 LATER 如何定位光标下路径的文件?
- State "LATER" from "INBOX"
13.44 LATER 如何按项目组织目录
- State "LATER" from "INBOX"
13.45 WAIT/FORWARD 如何让Emacs在光标到达当前Buffer最后一行尾部不自动recenter?
- State "WAIT/FORWARD" from "NEXT"
wait for arranged. - State "NEXT" from "LATER"
- State "LATER" from "INBOX"
需设置滚动参数,具体参考如下配置以及文档 和 emacs的光标滚动如何让其不在屏幕尾部自动滚屏到中间?
;;auto scroll behavior, '0' is center point while outof screen, or don't center. ;;(setq scroll-conservatively) (setq scroll-step 1) ;;(setq scroll-up-aggressively) ;;(setq scroll-down-aggressively) ;;wheel scroll step (setq mouse-wheel-scroll-amount '(1 ((shift) . 5) (control)))
13.46 LATER 考虑一下用el-get插件管理插件
- State "LATER" from "INBOX"
13.47 MAYBE/FUTURE eshell如何操作?
- State "MAYBE/FUTURE" from "LATER"
- State "LATER" from "INBOX"
Time: From:/media/sda6/study/mygitrepo/quietheart/misc/mylinux_home/home.user/_emacs.d/elisp/plugins.el
13.48 WAIT/FORWARD 如何配置自动新开“弹出”窗口的分割方向?
- State "WAIT/FORWARD" from "LATER"
等待整理至合适的位置。 - State "LATER" from "INBOX"
- State "INBOX" from
查看 M-x info 获取到帮助信息。
默认查看帮助信息的的时候,窗口会分割成左右两个,如果我们想要分割成上下,那么配置如下:
;; perfer split 'pop' window vertically(whole->up+lower). (setq split-height-threshold 0) (setq split-width-threshold nil)
这里我们需要注意的是, split vertically 意思是将窗口分割成上下两个部分; split horizontally 意思是将窗口分割成左右两个部分。具体查看 C-h f split-window-sensibly 。
13.49 LATER Emacs如何控制Pop分割窗口的大小?
- State "LATER" from "INBOX"
- State "INBOX" from
13.50 WAIT/FORWARD emacs如何进行会话保存?
- State "WAIT/FORWARD" from "LATER"
等待整理到合适的位置。 - State "LATER" from "INBOX"
Time: 暂时参考:保存和恢复工作环境 大致如下: 可借助desktop.el来完成buffer等缓存文件、位置等加载的保存和恢复。 自动恢复与保存相关的配置:
(desktop-save-mode 1)
手动保存会话:
输入 M-x desktop-save
输入之后,选择保存的目录。
手动恢复以前的会话:
输入 M-x desktop-change-dir
输入之后,选择之前会话所在目录,之后即可加载。
退回之前的会话:
输入 M-x desktop-revert
输入之后,可以退回之前加载的会话。
如果保存变量之类的信息,需要额外的插件:session.el,插件可能有些问题暂不考虑。
13.51 DONE Emacs背景配色设置?
- State "DONE" from "INBOX"
Time:
关于对emacs的颜色主题配置,有相关的插件:
13.51.2 配置默认主题
当把主题下载下来后 解压,然后将文件夹整个复制到到我们的load-path中 然后添加如下配置:
;;================================ ;;为我的emacs配置主题色彩 (color-theme-色彩名称) ;;================================ (require 'color-theme) (color-theme-initialize) (color-theme-calm-forest)
13.52 WAIT/FORWARD emacs的光标滚动如何让其不在屏幕尾部自动滚屏到中间?
- State "WAIT/FORWARD" from "DONE"
等待整理 - State "DONE" from "NEXT"
- State "NEXT" from "INBOX"
Time:
依照优先级别,依次可以设置如下三类变量,具体参见变量文档,
这里设置 scroll-step, 默认0表示光标到达屏幕顶或者尾之后就立即自动滚动到屏幕中心,其它值表示滚动的行数。
;;auto scroll behavior, '0' is center point while outof screen, or don't center. ;;(setq scroll-conservatively) (setq scroll-step 1) ;;(setq scroll-up-aggressively) ;;(setq scroll-down-aggressively)
13.53 WAIT/FORWARD 如何控制鼠标滚轮滚动的行数
- State "WAIT/FORWARD" from
等待整理
可以通过设置 mouse-wheel-scroll-amount 实现,具体可以通过 C-h v mouse-wheel-scroll-amount 查看其文档。
大致含义是:该变量是一个列表,列表元素是 ("行数" . “控制按键”) 表示按下特定控制按键时滚轮滚动的行数;如果没有 “控制按键” 那么表示单纯滚轮滚动行数;如果没有指定行数,那么按下控制按键滚轮滚动将近一个屏幕。 下面是一个例子:
;;wheel scroll step (setq mouse-wheel-scroll-amount '(1 ((shift) . 5) (control)))
13.54 LATER emacs如何清除所有buffer?
- State "LATER" from "INBOX"
Time:
13.55 LATER 配置调试
- State "LATER" from "NEXT"
- State "NEXT" from "INBOX"
如果某项没有生效的话,可以尝试 =emacs –init-debug- 启动,看看哪错了
13.56 NEXT 不喜欢emacs新开"提示窗口"是垂直方向
- State "NEXT" from "LATER"
- State "LATER" from "INBOX"
- State "INBOX" from
13.57 DONE Emacs如何定制颜色?
- State "DONE" from "INBOX"
Time:
可以使用特定插件,例如
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;color themes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'color-theme) (color-theme-initialize) (color-theme-calm-forest) ;;we can also select and preview with 'M-x color-theme-select'.
13.58 LATER 如何设置撤销的次数?目前貌似撤销只有有限的几次
- State "LATER" from "INBOX"
Time:
13.59 LATER 重复最近的命令
- State "LATER" from "INBOX"
输入 C-x z
13.60 WAIT/FORWARD elisp library
- State "WAIT/FORWARD" from "NEXT"
等待移动到合适的位置 - State "NEXT" from "INBOX"
- State "INBOX" from
整理至原理部分。
主要介绍:library, package, features的区别,以及 load-file, load, require, autoload 的区别。
13.60.1 关于 load-file, load, require, autoload
load-file
加载特定文件。
加载特定的文件(".el", ".elc"文件扩展名不会自动加载,但是".gz"会被自动加载)。档不想让emacs猜测文件扩展名".el", ".elc" 或者没有扩展名的时候使用这个函数。
load
加载一个文件。
通过搜索变量
load-path加载一个文件,参数可以是一个文件名称(不用是全路径), 比如(load "undo")。如果有".elc"编译版本的内容,这个命令将会自动加载之, 否则会自动加载".el", 或者".gz"的文件。当不需要知道文件的具体路径的时候不,使用这个函数加载。
require
如果一个package没有被加载的时候,加载一个package。
检测 features变量, 如果没有相应的标号,那么调用
load进行加载, 文件名是根据feature 名进行猜测的, 也可通过一个选项参数进行。最好在elisp库或者脚本中使用这个函数,这个和其他语言的 "require"或者"import"类似。
autoload
在函数被调用的时候加载文件。将一个函数名称和一个文件路径相关联,档这个功能被调用的时候,会加载这个文件,并且执行函数。如果你正在写一个major mode,尽可能将你的package安装使用autoload完成,因为这样可以节省启动的时间。
13.60.2 关于 Library, Package, Feature
13.60.2.1 Emacs lisp没有命名空间
所有的东西都是全局的动态的作用域,它只有一些隐藏的机制,所以,不能将library或者module当作像perl、python、java类似的具有命名空间的语言的Package系统。
13.60.2.2 Package和Library的区别是什么呢?
其实,这些概念在elisp中没有专门的定义,我们只能大致这样来看待它们:
Library
包含许多组建的elisp文件,比如
comment-dwim命令定义在newcomment.el中,它是一个包含众多函数的库。Package
任何对emacs用户有用的elisp库,无论是在major还是在minor模式下。
另外在emacs中,不使用 "module"这个概念。
13.60.2.3 Package/Library/Feature不会被管理
在package/library/feature/autoload的概念和文件名称之间没有绝对的对应关系。默认来说,如果一个elisp文件名称是xyz-mode.el,那么它会提供一个"xyz-mode"的lisp标号做为feature名称,然后用来执行这个mode的命令一般都是 xyz-mode 。 有时候, -mode 部分在任何 {file name, feature symbol name, command name} 中被忽略。
这只是一个松散的规则,有许多不按照这个规则的例子,比如:
文件 lisp-mode.el 会提供一个 lisp-mode 的标记做为feature,激活的命令可能是 emacs-lisp-mode 。
文件 cua-base.el 提供一个 cua-base 的标记,feature名称为 cua, 并且激活的命令是 cua-mode 。
文件 text-mode.el 没有提供任何标记做为feaure, 它通过命令 text-mode 被激活。
文件 desktop.el 提供一个 desktop 标记做为feature, 并且激活的命令是 desktop-save-mode 。
从以上即可看出,你可以有一个文件名称为 Joe-xyz-mode-v2.1.el, 它提供了名为 abc 的feature, 同时用来激活它的命令可能是 opq, 在 mode line中可能会被显示为 OPQ helper 。 这个文件可以被看作是一个package或者libaray。
13.60.2.4 其它
没有 "name space" "不被管理"的 module系统并不一定非常糟糕,这只是做为一个软件状态存在,许多流行的语言例如 C, C++, PHP 表现的更差,他们没有module系统,并且通过 include 来包含文件。我们需要注意的是,Scheme lisp也没有module系统,在2007年发布的R6RS添加了严格的module系统控制,但是这导致了Scheme社区的分裂。
13.61 WAIT/FORWARD Emacs自定义配置
- State "WAIT/FORWARD" from "INBOX"
待整理到合适的位置
Capture Time:
在帮助菜单里配置,而非手动修改配置文件时产生的配置信息,会以类似如下的形式写到~/.emacs中:
(custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(ecb-options-version "2.40") '(ecb-primary-secondary-mouse-buttons (quote mouse-1--mouse-2)))
13.62 LATER 默认启动xemacs的窗口大小
- State "LATER" from "INBOX"
Capture Time:
13.63 NEXT emacs-desktop的会话存储默认位置
- State "NEXT" from "INBOX"
Capture Time:
13.64 NEXT 如何高亮?
13.65 NEXT Emacs如何进行特定模式下的按键绑定映射?
- State "NEXT" from "INBOX"
Capture Time:
13.66 LATER 如何为当前的Emacs编辑器升级?
- State "LATER" from "INBOX"
Capture Time:
13.67 DONE Emacs撤销、重做和重复
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "NEXT"
等待进一步整理 - State "NEXT" from "INBOX"
Capture Time:
撤销是取消上次的操作,重做是对撤销的撤销,重复是对上次命令进行重做。大致如下:
撤销(undo)
输入
C-x u或C-/重做(redo)
输入
C-g C-x u或C-g C-/重复(repeat)
输入
C-x z
具体参考:Emacs撤销、重做和重复 和 编辑
13.68 NEXT Emacs 如何远程访问?
- State "NEXT" from "INBOX"
Capture Time:
13.69 LATER 将emacs custom config变成手动的config
- State "LATER" from "INBOX"
Capture Time:
13.70 WAIT/FORWARD 恢复文件
- State "WAIT/FORWARD" from "NEXT"
等待转移至合适的位置。 - State "NEXT" from "INBOX"
- State "INBOX" from
回复上次崩溃之时没有来得及修改的文件。
输入 M-x recover-file
输入之后,可以补全,输入文件路径即可。如果文件已经保存,则不存在恢复文件,如果文件上次没有保存,就会有一个 .#filename# 之类的文件,通过它来恢复上次没有来得及保存的内容。
13.71 LATER 无需远端安装emacs,用本地emacs直接访问远端,可否?
- State "LATER" from "INBOX"
Capture Time:
13.72 MAYBE/FUTURE Emacs 任务管理?
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
13.73 LATER 崩溃后下次启动自动提示回复文件的方式?
- State "LATER" from "INBOX"
Capture Time:
13.74 LATER Emacs如何粘帖复制文本到X剪切板中?
- State "LATER" from "INBOX"
Capture Time:
13.75 LATER Emacs中如何在require后卸载插件?
- State "LATER" from "INBOX"
- State "INBOX" from
13.76 LATER 拼音输入法
- State "LATER" from "INBOX"
Capture Time:
意外发现的情况: C-\ 会切换Emacs的输入法。
设置输入法应该是 C-x RET C-\
13.77 NEXT Emacs为什么有时候缩进无法删除?
- State "NEXT" from "INBOX"
Capture Time:
13.78 NEXT Emacs如何搜索光标下的内容
- State "NEXT" from "INBOX"
Capture Time:
目前是先 M-b 到单词首,再 C-s C-w 搜索光标后至单词尾的内容。
13.79 LATER Emacs如何格式化全部代码?
- State "LATER" from "INBOX"
Capture Time:
13.80 NEXT 为什么Emacs有时候无法删除缩进?
- State "NEXT" from "INBOX"
Capture Time:
tt bb
13.81 DONE Emacs如何反撤销重做?
13.82 WAIT/FORWARD emacs剪切板和x剪切板共享
- State "WAIT/FORWARD" from "NEXT"
有待进一步整理 - State "NEXT" from "INBOX"
Capture Time:
;;clipboard share for gui emacs (setq x-select-enable-clipboard t)
13.83 DONE 完善自己的开发环境,代码跳转、扫描、定位等,不用每次都要手动配置
- State "DONE" from "INBOX"
Capture Time:
需要借助插件: cedet 和 ecb 。 cedet 主要用于建立索引已经提供跳转等功能, ecb 主要提供方便的窗口布局。
当然,最好还是用 understand 或者 sourceinsight 之类的工具,简易点的也可用 geany 。
13.84 LATER Emacs 括号跳转
- State "LATER" from "INBOX"
Capture Time:
`C-M-n‘ Move forward over a parenthetical group (`forward-list‘).
`C-M-p‘ Move backward over a parenthetical group (`backward-list‘).
`C-M-u‘ Move up in parenthesis structure (`backward-up-list‘).
`C-M-d‘ Move down in parenthesis structure (`down-list‘).
13.85 DONE 关于Narrow
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "NEXT"
等待移动到合适的位置。 - State "NEXT" from "INBOX"
可参考:关于Narrow
13.86 LATER emacs如何搜索光标所在字符的内容
- State "LATER" from "NEXT"
- State "NEXT" from "INBOX"
Capture Time:
http://emacser.com/next-pre-word.htm
如果图个简单,可以
C-<left> 定位到单词首,然后 C-s C-w 将当前单词搜索,连续 C-w 可以扩展搜索的单词
13.87 LATER C-x =
- State "LATER" from "INBOX"
- State "INBOX" from
13.88 MAYBE/FUTURE 定义自己的Emacs环境
- State "MAYBE/FUTURE" from "NEXT"
- State "NEXT" from "INBOX"
- State "INBOX" from
最好兼容,与将要拥有以及已有的插件快捷键不冲突
高亮当前光标单词
搜索当前光标单词 http://emacser.com/next-pre-word.htm
13.89 MAYBE/FUTURE 将emacs插件分层整理一下,最好能尝试一下新版本的emacs
- State "MAYBE/FUTURE" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
13.90 NEXT Emacs如何撤销以及反撤销?
- State "NEXT" from "INBOX"
Capture Time:
13.91 WAIT/FORWARD —— Emacs标签跳转------
- State "WAIT/FORWARD" from
wait for move
From:/home/miracle/mydata/orgmode/gtd/output/emacs_tips.org
主要有如下功能
设置书签
输入
C-x r m
跳转到指定书签
输入
C-x r b, 输入之后,提示跳转的书签,可以TAB补全。
列出书签
输入
C-x r l
另外获取帮助信息输入 C-x r C-h , 其中的m/l/b子项和书签有关。
13.92 LATER —— Emacs mark ring------
- State "LATER" from
From:/home/miracle/work/androidL/gitlocalcode/device/tpvision/tvsoc/tvsoc_mtk/test/tpapi_pvr_test.cpp
C-x C-x 在上次Mark和光标之间切换,并且高亮
C-u C-x C-x 同上,但是不高亮,效果类似在上次位置和下次位置来回切换
C-@ C-@ 将记录mark到mark ring, 实际是activate,再deactivate
除了这个命令,许多命令在操作后,会自动保存操作之前的mark位置到mark ring(有当前buffer的、和全局的两种mark ring), 这样的命令运行之后,在回显区域有 Mark set 提示, 便于回到之前的位置。例如:使用 C-y 粘帖之时,使用 M-< / M-> 跳转buffer首尾之时,退出增量搜索之时, 插入buffer/file之时……
C-u C-@ 跳到上一次记录的mark, 范围是当前buffer
C-x C-@ 范围是global mark ring.
参考:
http://www.gnu.org/software/emacs/manual/html_node/emacs/Setting-Mark.html#DOCF5
http://www.gnu.org/software/emacs/manual/html_node/emacs/Mark-Ring.html#Mark-Ring
13.93 MAYBE/FUTURE 意外发现 ESC-` 在minibuf打开菜单栏
- State "MAYBE/FUTURE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "LATER"
- State "LATER" from "NEXT"
- State "NEXT" from "INBOX"
- State "INBOX" from
13.94 NEXT 学习资源
- State "NEXT" from "INBOX"
- State "INBOX" from
如何在官方网址上或者邮件上提问? http://blog.gmane.org/gmane.emacs.orgmode
官网 http://www.gnu.org/software/emacs/
对于每个插件,找到该插件发布的地方(如github),然后以报告bug的形式,或者查看前人报告的问题。
13.95 LATER Emacs如何自定义按键映射不冲突
- State "LATER" from "NEXT"
- State "NEXT" from "INBOX"
Capture Time:
13.96 NEXT Emacs高级搜索
- State "NEXT" from
在当前文件列出所有匹配行
M-x list-maching-lines
在多个文件和目录中搜索
M-x grep 或 M-x rgrep , 后者交互性更好。
在目录中查找文件
M-x find-name-dired
13.97 WAIT/FORWARD Emacs如何显示括号匹配?如何显示行号?
- State "WAIT/FORWARD" from "DONE"
等待整理 - State "DONE" from "INBOX"
Capture Time:
;;paren (show-paren-mode 1) ;;line number (global-linum-mode t)
启动后,显示行号输入 M-x global-linum-mode
13.98 LATER 设置输入法
- State "LATER" from
M-x set-input-method
C-x Ret C-\
13.99 DONE 使用Emacs阅读代码
- State "DONE" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
主要涉及到的插件包括:cedet+ecb+global
cedet 是一个代码索引后端
ecb 可以操作显示方式
global 是代码索引生成和查找的工具,类似ctags
参考:
13.100 LATER emacs自动保存间隔
- State "LATER" from "INBOX"
Capture Time:
13.101 NEXT emacs如何替换文本?
- State "NEXT" from "INBOX"
Capture Time:
13.102 LATER Emacs如何设置多重功能的按键?
- State "LATER" from "INBOX"
Capture Time:
例如我想在按下鼠标后,先定位到对应位置,然后再执行特定的函数(这里是 gtags-find-tag-from-here )
(local-set-key (kbd "C-M-<mouse-1>") '(lambda () (interactive) ;;(mouse-set-point <mouse-1>) ;; how to position at first? (gtags-find-tag-from-here) ) )
13.103 NEXT Emacs如何切换最近buffer,而非只有一个最近buffer?
- State "NEXT" from "INBOX"
Capture Time:
13.104 WAIT/FORWARD Emacs如何高亮多个单词?
- State "WAIT/FORWARD" from "NEXT"
等待进一步整理。 - State "NEXT" from "INBOX"
Capture Time:
13.104.1 利用emacs自带的 hi-lock-mode
高亮指定单词
M-s h p输入之后,再输入待高亮的单词,以及高亮的颜色(可补全),即可。高亮特定正则表达式
M-s h r类似前面,输入之后输入正则表达式以及颜色即可。高亮匹配正则表达式的行
M-s h l类似前面。取消高亮
M-s h u输入之后,默认自动取消刚刚设置的高亮,或者输入想要取消高亮的正则表达式来进行取消。
13.104.2 利用插件
主要有 highlight-symbol 和 idle-highlight
可实现光标处自动高亮,以及类似 vim 中的 * 和 # 搜索。
参考:http://www.cnblogs.com/bamanzi/archive/2012/12/03/emacs-find-modify-all-occurences.html
13.105 DONE 如何在Emacs直接预览markdown效果?
- State "DONE" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
可以使用 markdown-mode 插件。
参考网址: 官方网址 LinuxToy的文档
13.106 MAYBE/FUTURE 如何执行脚本
- State "MAYBE/FUTURE" from
$emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
13.107 NEXT Emacs崩溃后的恢复策略
- State "NEXT" from
输入 M-x recover-session 之后根据时间,选择需要恢复的会话情况。
13.108 NEXT emacs如何跳转到匹配的括号?
- State "NEXT" from "INBOX"
Capture Time:
C-M-n, C-M-p
13.109 NEXT 一些基本操作
- State "NEXT" from
- 前进
- 后退
- 跳转至光标下的路径
- 关闭所有buffer
- 跳至指定百分比
13.110 DONE emacs如何返回上次编辑的位置
13.111 NEXT Emacs如何定期自动保存文件?
- State "NEXT" from "INBOX"
Capture Time:
13.112 DONE emacs打开文件等,如何实现部分匹配文件或者命令而非精确开头匹配
- State "DONE" from "WAIT/FORWARD"
- State "WAIT/FORWARD" from "NEXT"
等待整理至合适位置。 - State "NEXT" from "INBOX"
Capture Time:
对打开buffer的 C-x b 以及打开文件的 C-x C-f 实现增加部分匹配可使用 ido 插件。
对于运行Emacs命令 M-x xxx 可以使用基于 ido 的 smex 插件实现部分匹配,省去了记忆许多快捷键的麻烦。
另外 helm 也是另外一套替换 ido 的补全方案,也可支持命令输入补全。
13.112.1 ido
具体参考相关文档。
13.112.2 smex
13.112.2.1 下载
13.112.2.2 配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;smex ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'smex) (global-set-key (kbd "M-x") 'smex) (global-set-key (kbd "M-X") 'smex-major-mode-commands) ;; This is your old M-x. (global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
13.113 LATER 意外发现的 M-* 和 M-. 是做什么的?
- State "LATER" from "NEXT"
- State "NEXT" from
13.114 NEXT Emacs代码折叠
- State "NEXT" from
http://www.cnblogs.com/bamanzi/archive/2011/10/09/2203866.html
13.115 NEXT 指定范围的批量替换
- State "NEXT" from
同一个文件、不同文件、正则表达、行首行尾等等。
13.116 INBOX Emacs如何清除无用buffer
Capture Time:
13.117 DONE emacs如何能够查看撤销树,里面包含时间信息?
13.118 WAIT/FORWARD 尝试更改emacs导出html的目录显示式样,采用浮动方式。
- State "WAIT/FORWARD" from "LATER"
等待整理. - State "LATER" from "INBOX"
Capture Time:
13.119 DONE emacs返回上次编辑的位置
- State "DONE" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
使用 goto-last-change 插件。
下载:https://www.emacswiki.org/emacs/download/goto-last-change.el
13.120 LATER emacs添加函数,使得选中区域确定的缩进4个空格
- State "LATER" from "INBOX"
Capture Time:
13.121 DONE 非常需要撤销树上注明撤销时间和简要内容emacs
- State "DONE" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
undo-tree 插件相关内容。
参考:
13.122 LATER emacs如何高亮单词
- State "LATER" from "INBOX"
Capture Time:
13.123 MAYBE/FUTURE emacs鼠标双击选词,配置成包括下划线
- State "MAYBE/FUTURE" from "INBOX"
Capture Time:
13.124 WAIT/FORWARD emacs evaluate orgmode block 自动回复?
- State "WAIT/FORWARD" from "INBOX"
wait for refile.
Capture Time:
如果导出的时候,也就是evaluate orgmode代码块的时候,不要求提醒是否进行evaluate(这在自动导出一个包含很多代码块的文件中很有用),那么需要设置 org-confirm-babel-evaluate,
例如绘制好包含许多 plantuml 的代码后,导出之前不要求对所有的 plantuml 代码块进行evaluate确认,那么如下设置:
;; don't confirm plantuml before its evaluate.
(setq org-confirm-babel-evaluate
(lambda (lang body) (not (equal "plantuml" lang))))
参考:http://eschulte.github.io/org-scraps/scraps/2010-12-21-eval-query.html
13.125 WAIT/FORWARD emacs关于文件引用路径的问题
- State "WAIT/FORWARD" from "INBOX"
wait for more.
Capture Time:
考虑到不同机器上面的可移植性,规范一下自己使用Linux的用户主目录的目录结构。然后通用前缀配置到emacs配置当中,然后使用elisp链接引用文件,迁移机器时自动处理对应路径。
13.126 MAYBE/FUTURE Emacs绘图环境
13.127 LATER emacs如何方便地切换窗口
- State "LATER" from "INBOX"
Capture Time:
13.128 NEXT emacs导出时,无法支持中文文件名称链接
- State "NEXT" from "INBOX"
Capture Time:
13.129 NEXT emacs如何对选中的块,无论是否在orgmode中都能自由地通过tab等方式来缩进?
- State "NEXT" from "LATER"
- State "LATER" from "INBOX"
Capture Time:
13.130 LATER Emacs字体问题
- State "LATER" from "INBOX"
Capture Time:
https://www.douban.com/group/topic/33652445/
参考链接 : http://modioyo.appspot.com/2011/11/24/emacs-24-font.html
恭喜 也解决的路过 http://paste.ubuntu.org.cn/i141603 字体设置 (eval-when-compile (require 'cl)) (defun set-font (english chinese english-size chinese-size) (set-face-attribute 'default nil :font (format "%s:pixelsize=%d" english english-size)) (dolist (charset '(kana han symbol cjk-misc bopomofo)) (set-fontset-font (frame-parameter nil 'font) charset (font-spec :family chinese :size chinese-size)))) (ecase system-type (gnu/linux (set-face-bold-p 'bold nil) (set-face-underline-p 'bold nil) (set-font "monofur" "vera Sans YuanTi Mono" 20 20)) (darwin (set-font "monofur" "STHeiti" 20 20)))
参考:https://www.emacswiki.org/emacs/FontSets
https://www.douban.com/group/topic/33652445/
参考链接 : http://modioyo.appspot.com/2011/11/24/emacs-24-font.html
13.131 LATER emacs 如何粘帖刚刚编辑的内容?
- State "LATER" from "INBOX"
Capture Time:
13.132 WAIT/FORWARD emacs技巧,拷贝文件路径
- State "WAIT/FORWARD" from "INBOX"
wait for arrange.
Capture Time:
直接图形浏览器上鼠标右键复制文件,然后到emacs上粘帖,直接就是路径。
13.133 LATER gnus使用方法
- State "LATER" from "INBOX"
Capture Time:
13.134 NEXT emacs mark ring是怎么回事?
- State "NEXT" from "INBOX"
Capture Time:
13.135 LATER emacs narrow相关
- State "LATER" from "INBOX"
Capture Time:
see C-x n C-h
13.136 LATER emacs按键映射是否冲突?
- State "LATER" from "INBOX"
Capture Time:
参考: http://blog.jobbole.com/100983/
global-set-key 每个人都有不同的常用命令集合. 为那些最常用的Emacs功能分配快捷键可以节省你的时间. 你可以用下面语句来将shell命令的快捷键设置为 C-c s: (global-set-key "\C-cs" 'shell) 1 (global-set-key "\C-cs" 'shell) C-c [any letter] 是专门预留给用户自定义快捷键的,所有的major和minor mode都应该准从这一规范. More information about key bindings and key binding conventions.
key binding conventions 需要翻译?
13.137 LATER emacs自动保存,提交至git
- State "LATER" from "INBOX"
Capture Time:
13.138 LATER emacs 寄存器复制粘帖
- State "LATER" from "INBOX"
Capture Time:
13.139 LATER 粘帖如何指定寄存器?以及如何对 M-y 使用最近频率调整?
- State "LATER" from