|
|
第1行: |
第1行: |
| + | *起因 |
| + | 因为是个人业务 ,所以不小心 机器 因为加错防火墙 ,把自己也deny 了 于是 只好多次关机 ,开机 然后 终于成功进入单用户模式,可是开机后,上wiki 新添加一个文章,说已登出,于是再登录,问题就来了,提示 |
| | | |
| + | 似乎您的登录会话有问题; 为了防止会话劫持,这个操作已经被取消。 请返回先前的页面,重新载入该页面,然后重试。 |
| + | 根本没办法 登录 ,中间又是请教别人 ,又是分析代码 想用的都用了 差点重装wiki 还好 后来才懂了 |
| | | |
− | ==安装emacs==
| + | *解决 |
− | [[How to Compile Emacs on Linux]]
| + | 一开始是以为关闭redis 搞定 |
| | | |
− | == 正文==
| + | 其实清空redia 数据就好了 就一条 flushall使命嘛 |
− | == 成为高手笔记==
| |
− | <pre>即使你不打算使用 Emacs 默认快捷键, 这步也是必须的, 不要跳过!
| |
| | | |
− | 最起码要知道以下命令,
| + | 然后在浏览器删除相对应的 移除特定网站的 Cookie |
| | | |
− | M-x describe-variable, 快捷键 C-h v, 查看变量的文档
| + | 2019年迁移wiki时 是因为防火墙加错了 看 memcache 相关 |
− | M-x describe-function, 快捷键 C-h f, 查看命令的文档
| |
− | M-x describe-key, 快捷键 C-h k, 查看快捷键的文档</pre>
| |
| | | |
| + | 昨天想重装呢 笑死了 |
| | | |
− | 以实际问题作为切入点
| + | * 新发现 |
| | | |
− | 努力能很快得到回报, 你会越学越有乐趣, 进入感情上的正反馈.
| + | 这几天 用上公司的pc 一开始可以 chrome 登录 后来发现和上面一样的问题 ,搞了N久 才发现清空数据后,不让同步密码就可以了 |
| | | |
− | 要成为高手, 兴趣是最重要的.
| + | Redis Flushall 命令 Redis 服务器 Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key ) |
| + | http://www.runoob.com/redis/server-flushall.html |
| | | |
− | 以我为例, 我急需 GTD 的工具, 而 Emacs 的 Org-mode 是同类软件中最好的 (没有之一). 用 Org-mode 节省了时间后, 我对 Emacs 爱屋及乌, 兴趣高涨了 100 倍.
| |
| | | |
− | 反面例子是啃Lisp教程开始Emacs之旅, 坚持下来的人寥寥无几.
| + | [https://www.mediawiki.org/wiki/Firefox_users_and_session_loss_bug/zh Firefox用户和会话丢失漏洞 对不起!由于会话数据丢失,我们无法处理您的编辑。 您可能已经退出。请核实您是否仍在登录,并重试。如果仍然不能工作,尝试退出并重新登录,并检查您的浏览器是否允许来自该网站的cookie] |
| | | |
− | 待解决的问题设定优先度 关键在于理性地考虑你最迫切需要解决的一个问题.以这个问题作为出发点, 除此之外都可以妥协.
| |
| | | |
− | 虽然 Emacs 无所不能, 但是饭也要一口一口吃. 有时退一步等于进两步.
| |
| | | |
− | 例如, 我一直以为 Emacs 的中文显示很完美, 搞不懂为什么有人在字体配置上花那么多时间.
| + | [[category:ops]] [[category:redis]] [[category:wiki]] |
− | | |
− | 在接到读者反馈后, 我才明白原来我一直在终端下使用Emacs, 终端软件可以完美显示中文字体, 所以就没 Emacs 什么事了. 需要配置字体的人用的是图形界面 Emacs.
| |
− | | |
− | 当初只在终端下使用 Emacs 是因为需连接到远程服务器. 我认为这是重点. 甚至为此放弃了漂亮的配色主题 (后来发觉此牺牲毫无必要). 塞翁失马, 由此也避免了图形界面版本的所有问题.
| |
− | | |
− | https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-zh.org
| |
− | | |
− | ==后记==
| |
− | <span style="color:green;">后面要把常用的这些常用快捷键写成一个短小的总结卡</span>
| |
− | === 模式键定义===
| |
− | | |
− | 四个模式键:C—-Ctrl;M—-Alt;s—-Super(Win);S—-Shift
| |
− | | |
− | 比如:
| |
− | | |
− | C-x:表示按下ctrl键,然后按下x键。
| |
− | | |
− | C-x C-c:表示按下ctrl,然后按下x键,松开后再按下c键。
| |
− | | |
− | C-x k:表示按下ctrl,同时按下x和k键。
| |
− | | |
− | | |
− | === 最常用命令===
| |
− | | |
− | <span style="color:red;">M-f 与 M-b </span> 在行内, 前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
| |
− | | |
− | <span style="color:red;">M-{ M-} </span> 段开头或结尾
| |
− | | |
− | <span style="color:red;">C-x [ C-x ] </span>页开头或结尾
| |
− | | |
− | <span style="color:red;">C-a 或 C-e </span> 对于英文文本,若将光标快速移到行首或行尾,标准按键是 C-a 或 C-e 但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记,用 Home或End 键也未尝不可。
| |
− | | |
− | <span style="color:red;">M-a 与 M-e </span> 则分别可将光标移动到句首或句尾。
| |
− | | |
− | <span style="color:red;"> C-v 或 M-v <span> 如果文档很长,用可实现向下或向上翻屏
| |
− | | |
− | M-< ,移到最开始。
| |
− | 然后再按几次 C-v 回到这里。
| |
− | | |
− | M-> ,移到最末尾。
| |
− | 然后再按几次 M-v 回到这里。
| |
− | | |
− | C-x 2 将屏幕划分成两个窗格。这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
| |
− | | |
− | C-x o(“o”指的是“其它(other)”), 将光标转移到下方的窗格。
| |
− | | |
− | C-x 1 (在上方窗格里)输入 C-x 1 关掉下方窗格。
| |
− | | |
− | C-x C-f 寻找文件。
| |
− | C-x C-s 保存文件。
| |
− | | |
− | ==== 搜索 ====
| |
− | 增量搜索
| |
− | C-s 正向搜索
| |
− | | |
− | C-r 反向搜索
| |
− | | |
− | C-M-s使用正则表达式正向搜索
| |
− | | |
− | C-M-r 使用正则表达式反向搜索
| |
− | | |
− | M-p 选择上一个搜索结果
| |
− | | |
− | M-n 选择下一个搜索结果
| |
− | | |
− | RET 退出搜索并停留在当前搜索到的位置
| |
− | | |
− | C-g 中止当前搜索
| |
− | | |
− | ===save and exit ===
| |
− | <pre>
| |
− | C-x C-c:退出Emacs
| |
− | | |
− | C-x C-s:保存当前buffer
| |
− | </pre>
| |
− | | |
− | ===选中 复制 黏贴===
| |
− | <pre>
| |
− | 把光标移动到区域的首字符
| |
− | 键入C-@(即ctrl+shift+2),以设置标记 有时是ctrl+shife +@
| |
− | 把光标移动到区域的最后一个字符
| |
− | 键入M(alt)-w,拷贝这个选定区域到粘贴板(剪切是C-w)
| |
− | 用光标定位将要粘贴内容的地方,然后键入C-y ,拷贝成功。
| |
− | | |
− | C-@ mark --> c-f or c-n --> alt-w --> c-y
| |
− | | |
− | C-w 剪切标记到当前光标所在处的文本
| |
− | </pre>
| |
− | | |
− | ===查找===
| |
− | <pre>
| |
− | 搜索/替换(Seach/Replace)
| |
− | C-s 向后搜索
| |
− | C-r 向前搜索</pre>
| |
− | | |
− | ===替换===
| |
− | <pre>
| |
− | 按M - %启动查找替换(M is alt on debian),输入要被替换的词,回车,然后输入要替换的词,再回车。
| |
− | 被替换的词会高亮起来,这时,输入y替换并跳到下一个,输入n忽略并跳到下一个,输入q结束,输入!替换剩下的全部。
| |
− | | |
− | 一些常用的选项:
| |
− | C - g 中断查找替换过程。
| |
− | ^ 返回上一个替换点,按y继续下一个,如果不想替换上一个的话,用^返回到上一个,然后按 C - r 进入编辑,修改完后按C - M - c退出继续下一个。
| |
− | C - l 使当前匹配显示在文档中间。
| |
− | C - r 进入修改。
| |
− | </pre>
| |
− | [https://www.cnblogs.com/robertzml/archive/2010/03/03/1675870.html 学习Emacs系列教程(八):查找替换]
| |
− | | |
− | [https://www.cnblogs.com/skyhacker/archive/2012/01/03/2311437.html emacs查找替换]
| |
− | | |
− | ===移动 ===
| |
− | <pre>
| |
− | | |
− | M-< 到文件开头
| |
− | M-> 到文件末尾
| |
− | | |
− | | |
− | | |
− | 以下命令在翻页浏览时相当有用:
| |
− | | |
− | C-v 向前移动一屏
| |
− | M-v 向后移动一屏
| |
− | C-l 重绘屏幕,并将光标所在行置于屏幕的中央
| |
− | (注意是 CONTROL-L,不是 CONTROL-1)
| |
− | | |
− | | |
− | 整屏的移动很有用,但是如何在文字中精确定位呢?
| |
− | | |
− | 有几种方式可以选择。用方向键当然可以,不过更有效率的方法是保持双手位于
| |
− | 主键盘区,然后使用 C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方
| |
− | 向键是一样的,如下图所示:
| |
− | | |
− | 上一行 C-p
| |
− | :
| |
− | :
| |
− | 向左移 C-b .... 目前光标位置 .... 向右移 C-f
| |
− | :
| |
− | :
| |
− | 下一行 C-n
| |
− | | |
− | >> 用 C-n 或 C-p 将光标移到上图的中央。
| |
− | 按 C-l,整幅图会被显示在屏幕的中央。
| |
− | | |
− | | |
− | | |
− | 移动的单位 向后 向前
| |
− | 字符 C-b C-f
| |
− | | |
− | | |
− | | |
− | 当前行开头或结尾 C-a C-e
| |
− | | |
− | C-n
| |
− | | |
− | M-f 如果你嫌一个字符一个字符地挪光标太慢,你还可以一个词一个词地跳。M-f
| |
− | (META-f) 可以将光标往前移动一个词,而 M-b 则是往后移。【这里的“词”指
| |
− | 英文单词,对中文来说,则是指移动到下一个标点符号。】
| |
− | | |
− | 类似的惯例在“行”与“句子”之间也同样适用:C-a 和 C-e 可以将光标移动到
| |
− | “一行”的头部和尾部;而 M-a(和terminator冲突) 和 M-e 则将光标移动到“一句”的头部和尾部。
| |
− | | |
− | | |
− | 这里对简单的光标移动命令做一个总结,其中也包括了整词和整句的移动:
| |
− | | |
− | C-f 向右移动一个字符
| |
− | C-b 向左移动一个字符
| |
− | | |
− | M-f 向右移动一个词【对中文是移动到下一个标点符号】
| |
− | M-b 向左移动一个词【对中文是移动到上一个标点符号】
| |
− | | |
− | C-n 移动到下一行
| |
− | C-p 移动到上一行
| |
− | | |
− | C-a 移动到行首
| |
− | C-e 移动到行尾
| |
− | | |
− | M-a 移动到句首
| |
− | M-e 移动到句尾
| |
− | | |
− | | |
− | | |
− | 这里还要介绍两个重要的光标移动命令:M-< (META 小于号)可以将光标移动到
| |
− | 所有文字的最开头;M-> (META 大于号)可以将光标移动到所有文字的最末尾。
| |
− | | |
− | 注意,在大部分键盘上,小于号(<)需要用上档键(Shift)来输入,所以在这
| |
− | 些键盘上你应该用 Shift 键来输入 M-<,如果不按 Shift 键,你输入的会是
| |
− | M-comma(META 逗号)。
| |
− | | |
− | >> 试一试 M-< ,移到本快速指南的最开始。
| |
− | 然后再按几次 C-v 回到这里。
| |
− | | |
− | >> 试一试 M-> ,移到本快速指南的最末尾。
| |
− | 然后再按几次 M-v 回到这里。
| |
− | | |
− | | |
− | 如果你的键盘上有方向键的话,也可以用它们来移动光标。不过我们有三个理由
| |
− | 推荐你学习 C-b 、C-f 、C-n 、和 C-p:(1)它们在任何键盘上都能用。(2)
| |
− | 当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你
| |
− | 的手不需要离开打字区。(3)一旦你习惯了使用这些组合键,你也可以很容易地
| |
− | 适应其它更高级的光标移动命令。
| |
− | | |
− | 大部分的 Emacs 命令接受数字参数,并且对于多数命令而言,这些数字参数的作
| |
− | 用是指定命令的重复次数。为一个命令指定数字参数(也就是重复次数)的方法
| |
− | 是:先输入 C-u,然后输入数字作为参数,最后再输入命令。如果你有META (或
| |
− | EDIT 或 ALT)键,那么还有另一种办法:按住 META 键不放,然后输入数字。不
| |
− | 过我们还是建议你用 C-u,因为它在任何终端机上都能用。这种数字参数也称为
| |
− | “前缀参数”,意思是说这个参数是先于使用它的命令而输入的。
| |
− | | |
− | 举例来说, C-u 8 C-f 会向前移动 8 个字符。
| |
− | </pre>
| |
− | | |
− | ===缓冲区、窗口与窗框===
| |
− | <pre>
| |
− | | |
− | 2018年 01月 23日 星期二 21:03:14 CST 学习这个
| |
− | | |
− | Emacs 启动后,窗框中默认只有一个窗口,但是使用 C-x 1 或 C-x 2 可以将其水平或竖直一分为二,这个分割过程可以无限的进行下去。每次被分割的窗口都是输入光标所在的窗口(也称为被激活的窗口)。使用 C-x o 可以在多个窗口中跳转。
| |
− | | |
− | 由于 Emacs 在拆分窗口时,默认是水平或竖直均分,所以如果你希望将某个窗口调的宽一些,可 C-x } ;要使之窄一些,可 C-x { ;要使之高一些,可 C-x ^,但是要使之矮一些,貌似只能是激活该窗口下方的窗口,然后让下方的窗口高一些。这些窗口大小的调整方法,每次只能使得窗口的尺寸增大或减小一个字符的宽度或高度。如果你不想多次输入像 C-x ^ 这样的命令,那么可以用 C-u n C-x ^ 这样的组合键,其中 n 表示你要重复执行 C-x ^ 这样的命令 n 次。例如,要将当前窗口的高度增加 5 个字符的高度,只需 C-u 5 C-x ^ 即可。
| |
− | | |
− | C-u 最好要牢记,它的职能就是给某个组合键所绑定的 Emacs Lisp 函数传递一个参数值。 C-u 5 C-x ^ 表示向 C-x ^ 所绑定的 Emacs Lisp 函数传递参数值 5 ,而这个函数接受这个参数值之后,就会将窗口的高度增加 5 个字符的高度。
| |
− | 要查看按键被绑定到了哪个 Emacs Lisp 函数,只需 C-h k <RET> 按下你要查询的键 。 <RET> 表示回车键
| |
− | | |
− | 如果觉得窗口太多,想关掉一些,那么关闭被激活的窗口的组合键是 C-x 0 。如果是图形界面的 Emacs,只需要鼠标右键点击窗口的模式行即可将该窗口关闭。我的建议是:能用键盘就不要用鼠标。
| |
− | | |
− | 要在某个窗口中打开或新建一个文件,可 C-x C-f 文件路径。
| |
− | | |
− | 为了节省内存占用,请尽量使用 Emacs 的多窗口模式,不要打开一个又一个 Emacs
| |
− | | |
− | </pre>
| |
− | | |
− | === 文本编辑的正确姿势===
| |
− | 用 Emacs 的正确姿势应该是永远保持能不用鼠标就不用鼠标的姿势!因此,你需要学会用键盘来控制光标在窗口中的位置。
| |
− | <pre>
| |
− | 最基本的光标位置控制键如下所示:
| |
− | | |
− | 上一行 C-p
| |
− | :
| |
− | :
| |
− | 向左移 C-b .... 目前光标位置 .... 向右移 C-f
| |
− | :
| |
− | :
| |
− | 下一行 C-n</span>
| |
− | 要记忆这几个键并不困难。 p 就是 previous(在...之前), n 就是 next, b 就是 backward, f 就是 forward,而 C 就是 Control……美国人民真会玩!
| |
− | </pre>
| |
− | | |
− | | |
− | 上述按键虽然简单易懂,但它们只适合小范围移动光标。在行内,可以用 <span style="color:red;">M-f 与 M-b </span>前后大步移动光标,步进单位对于英文而言是单词的长度,对于中文而言是两个标点符号的间距。
| |
− | | |
− | 对于英文文本,若将光标快速移到行首或行尾,标准按键是<span style="color:red;"> C-a 或 C-e </span>但是对于中文而言,这对按键有着将光标被移到段首或段尾的奇异效果……如果偶尔忘记了这对按键,用 Home 或 End 键也未尝不可。<span style="color:red;"> M-a 与 M-e </span>则分别可将光标移动到句首或句尾。
| |
− | | |
− | 如果文档很长,用 <span style="color:red;">C-v 或 M-v </span>可实现向下或向上翻屏。如果偶尔忘记了这对按键,用键盘上的 PgUp 与 PgDn 翻页键也可行。
| |
− | | |
− | 跨度最大的光标移动键是 M-< 与 M-> ,可分别将光标移动到缓冲区的首部与尾部。
| |
− | | |
− | 一旦掌握了上述这几个控制光标位置的按键,在 Emacs 中鼠标基本上就变得不是那么不可或缺了,更重要的是,这些按键能够帮助你更快速的选择文本。对于文档中的待选文本区域,用上述按键将光标移动到该区域的起始位置,然后用<span style="color:red;"> C-@ </span>标定选区之首,然后继续用上述按键将光标移动到选区之尾,这样就完成了文本的选取。
| |
− | | |
− | | |
− | 你可能不知道怎么产生 C-@ 按键序列。普通键盘上,应该是摁住 Ctrl 键,然后再摁住 Shift 键,最后摁下数字 2 键,然后松开手。因为 @ 在 2 上面,需要 Shift 切换……
| |
− | | |
− | 对于选中的文本,随后的操作无非是剪切、复制或删除。剪切,请用 C-w;复制,请用 M-w;删除,请用 Backspace。对于剪切或复制的文本,要粘帖在光标所在位置,请用 C-y……或者你也可以试着看看 C-y 之后再 M-y 有什么效果!
| |
− | | |
− | 对文本进行了一段时间的编辑之后,要反悔的话,就用 C-_ 键执行 Undo 操作。
| |
− | | |
− | 要产生 C-_ 的按键序列,请参考上文所讲的 C-@ 的做法。
| |
− | 建议现在就立刻将上述提到的每个按键都反复试验六、七次,以后就一直坚持使用它们……用不了几天也许就变成手指的本能了。忘掉鼠标吧,键盘可以解放你的双手,可以让你从畸形的鼠标手解脱,然后变成键盘手……因为你很快就会觉得左手的小指会有点酸痛!我会在下一节中拯救你的手。
| |
− | | |
− | ===拯救你的左手小拇指===
| |
− | 如果感到左手的小手指有点疼,就不要再去用左手去摁 C-x C-s 这样的键了,你完全可以用右手的小指去摁键盘右侧的 Ctrl 键,然后左手相应的手指去摁 x 与 s 键
| |
− | | |
− | ===将一段代码向右推===
| |
− | [https://segmentfault.com/a/1190000003811296 将一段代码向右推20180124pm到这里 后面的还没看完]
| |
− | | |
− | ===显示行号===
| |
− | ====临时显示行号或者取消行号====
| |
− | 在Emacs下执行 M-x linum-mode 来显示或者取消行号
| |
− | M-x : Alt + x
| |
− | 输入: linum-mode
| |
− | | |
− | ===跳转到指定行 ===
| |
− | ====临时====
| |
− | M-x goto-line 然后回车 <line_number>
| |
− | ====长期====
| |
− | 以在.emacs文件中定制一下(添加以下一行):
| |
− | | |
− | (define-key ctl-x-map "l" 'goto-line)
| |
− | | |
− | 然后每次在emacs中按C-x再按l,输入指定的行号就可以了。
| |
− | | |
− | http://blog.csdn.net/grey_csdn/article/details/78905862
| |
− | http://bbs.csdn.net/topics/60028785
| |
− | | |
− | | |
− | === 常用插件===
| |
− | 记笔记,安排日程,那么毫无疑问Org-Mode是首选
| |
− | | |
− | [https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions Markdown]
| |
− | | |
− | | |
− | === 快捷键===
| |
− | <pre>
| |
− | M-s : 新建一个buffer(缓冲区)
| |
− | | |
− | C-x O : 注意是大写的O,不是零,所以需要按住shift键再按o键。用于在缓冲区之间切换
| |
− | | |
− | C-g : 取消当前操作
| |
− | | |
− | C-x u : 回到上一步,相当于Undo
| |
− | | |
− | C-x C-x : 变大写
| |
− | | |
− | C-x 3 : 把缓冲区(buffer)分为左右两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
| |
− | | |
− | C-x 2 : 把缓冲区(buffer)分为上下两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口)
| |
− | | |
− | M-w : 选中文字的情况是复制文字,而如果没有选中文字则是复制当前的一行
| |
− | | |
− | C-w : 选中文字的情况是剪切文字,而如果没有选中文字则是剪切当前的一行
| |
− | | |
− | M-x : 调出命令输入,可以在后面接命令,比如man,svn-status,等
| |
− | | |
− | C-y : 黏贴
| |
− | | |
− | C-x C-s : 保存文本
| |
− | | |
− | C-x C-f : 打开文件,如果文件不存在,则新建文件
| |
− | | |
− | C-x C-v : 打开一个文件,取代当前缓冲区
| |
− | | |
− | C-x k : 关闭当前缓冲区(buffer)
| |
− | | |
− | C-s : 向前搜索
| |
− | | |
− | C-r : 向后搜索
| |
− | | |
− | C-x h : 全选
| |
− | | |
− | C-v : 向下翻页
| |
− | | |
− | M-v : 向上翻页
| |
− | | |
− | C-f : 前进一个字符
| |
− | | |
− | C-b : 后退一个字符
| |
− | | |
− | M-f : 前进一个单词
| |
− | | |
− | M-b : 后退一个单词
| |
− | | |
− | C-@ : 标记开始区域
| |
− | | |
− | C-a : 移到行首
| |
− | | |
− | C-e : 移到行尾
| |
− | | |
− | M-a : 移到句首
| |
− | | |
− | M-e : 移到句尾
| |
− | | |
− | M-< : 缓冲区头部
| |
− | | |
− | M-> : 缓冲区尾部
| |
− | | |
− | M-g M-g,再输入数字 : 跳转到文本的第几行
| |
− | | |
− | C-x 0 : 关闭当前缓冲区
| |
− | | |
− | C-x C-c : 退出Emacs
| |
− | | |
− | | |
− | </pre>
| |
− | | |
− | [https://aifreedom.com/technology/112 Emacs快捷键列表]
| |
− | | |
− | 链接:https://www.jianshu.com/p/732157b02ecc
| |
− | | |
− | ==org mode==
| |
− | Emacs 的 Org-mode 在一定程度上可以替代 OneNote,有些方面甚至更好
| |
− | [[Org-mode]]
| |
− | | |
− | ==reload configfile==
| |
− | | |
− | emacs 打开~/.emacs的时候执行命令M-x eval-buffer,就可以使配置文件立即生效。
| |
− | | |
− | ===配置===
| |
− | <pre>
| |
− | https://github.com/gabrielelanaro/emacs-for-python
| |
− | https://github.com/jorgenschaefer/elpy
| |
− | http://www.jesshamrick.com/2012/09/18/emacs-as-a-python-ide/
| |
− | https://realpython.com/blog/python/emacs-the-best-python-editor
| |
− | | |
− | *day1
| |
− | pass 20170610
| |
− | 有空再详细的再看
| |
− | | |
− | :
| |
− | 记得要添加在公司作的相关的emacs 笔记
| |
− | | |
− | | |
− | =======
| |
− | 这几天常用的几个重要使命
| |
− |
| |
− | | |
− | | |
− | | |
− | 重要快捷键(Important)
| |
− | C-k 删除一行
| |
− | C-g 停止当前运行/输入的命令
| |
− | C-x u 撤销前一个命令
| |
− | | |
− | c-j 下称整个文件内容
| |
− | | |
− | emacs 菜单 用F10或者M-`。
| |
− | | |
− | ctrl+g q 退出 快速说明
| |
− | | |
− | 编辑器内显示行号可使用 M-x linum-mode 来开启。
| |
− | M-x 然后在最下面 输入 linum-mode
| |
− | not try
| |
− | q
| |
− | | |
− | 获取帮助
| |
− | ctrl+h k 要查看的快捷键盘
| |
− | | |
− | | |
− | | |
− | | |
− | 学习基础 Elisp
| |
− | | |
− | ctrl+x ctrl +b
| |
− | | |
− | | |
− | C-x o:把光标在屏幕上的窗口间进行切换。记忆方法:其它(Other)窗口。
| |
− | | |
− | 然后选择 *scratch*
| |
− | | |
− | 运算 C-X c - E
| |
− | | |
− | 插件管理
| |
− | | |
− | c-x o other window install
| |
− | | |
− | company
| |
− | f2 打开配置文件
| |
− | | |
− | org-mode
| |
− | | |
− | major mode and minor mode (C-h m)
| |
− | | |
− | | |
− | | |
− | | |
− | ;;evan配置文件
| |
− | ;; ~/.emacs 行号什么 的 我是加到这个文件生效的
| |
− | ;; ~/.emacs.d/emacs
| |
− | | |
− | ;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
| |
− | (tool-bar-mode -1)
| |
− | | |
− | ;; 关闭文件滑动控件
| |
− | (scroll-bar-mode -1)
| |
− | | |
− | ;; 显示行号 试过 这个一定有效果
| |
− | (global-linum-mode 1)
| |
− | | |
− | ;; 更改光标的样式(不能生效,解决方案见第二集)
| |
− | (setq cursor-type 'bar)
| |
− | | |
− | ;; 关闭启动帮助画面
| |
− | (setq inhibit-splash-screen 1)
| |
− | | |
− | ;; 关闭缩进 (第二天中被去除)
| |
− | ;; (electric-indent-mode -1)
| |
− | | |
− | ;; 更改显示字体大小 16pt
| |
− | ;; http://stackoverflow.com/questions/294664/how-to-set-the-font-size-in-emacs
| |
− | (set-face-attribute 'default nil :height 160)
| |
− | | |
− | ;; 快速打开配置文件
| |
− | (defun open-init-file()
| |
− | (interactive)
| |
− | (find-file "~/.emacs.d/init.el"))
| |
− | | |
− | ;; 这一行代码,将函数 open-init-file 绑定到 <f2> 键上
| |
− | (global-set-key (kbd "<f2>") 'open-init-file)
| |
− | | |
− | ; 开启全局 Company 补全
| |
− | (global-company-mode 1)
| |
− | | |
− | ;; 作者用的 是t
| |
− | 3(global-company-mode t)
| |
− | | |
− | | |
− | ;; ~/.emacs 生效的居然是这个 2018
| |
− | ;; 在 mode line 上显示行列号
| |
− | (setq column-number-mode 1)
| |
− | (setq line-number-mode 1)
| |
− | | |
− | ;;显示列号
| |
− | (setq column-number-mode t)
| |
− | | |
− | ;; 显示行号
| |
− | (global-linum-mode 1)
| |
− | | |
− | ;; 取消滚动栏,工具栏
| |
− | (tool-bar-mode 0)
| |
− | (menu-bar-mode 0)
| |
− | (scroll-bar-mode 0)
| |
− | | |
− | ;; 关闭emacs启动时的页面
| |
− | (setq inhibit-startup-message 1)
| |
− | (setq gnus-inhibit-startup-message 1)
| |
− | ;; 以 y/n代表 yes/no
| |
− | (fset 'yes-or-no-p 'y-or-n-p)
| |
− | ;;; 设置备份策略
| |
− | (setq make-backup-files t)
| |
− | (setq kept-old-versions 2)
| |
− | (setq kept-new-versions 2)
| |
− | (setq delete-old-versions t)
| |
− | (setq backup-directory-alist '(("" . "~/.emacsbackup")))
| |
− | | |
− | ;; 公共插件配置
| |
− | ;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
| |
− | (require 'package)
| |
− | (add-to-list 'package-archives
| |
− | '("melpa" . "http://melpa.milkbox.net/packages/") t)
| |
− | (package-initialize)
| |
− | | |
− | ;;内置的package管理,emacs24以上的版本有用
| |
− | (require 'package)
| |
− | ;;将melpa仓库地址加入到package-archives这个列表变量里面
| |
− | (add-to-list 'package-archives
| |
− | '("melpa" . "http://melpa.org/packages/") t)
| |
− | ;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
| |
− | (add-to-list 'package-archives
| |
− | '("popkit" . "http://elpa.popkit.org/packages/") t)
| |
− | ;;初始化package
| |
− | (package-initialize)
| |
− | ;;更新仓库里面的package
| |
− | (when (not package-archive-contents)
| |
− | (package-refresh-contents))
| |
− | (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.
| |
− | '(package-selected-packages (quote (company auto-complete autopair))))
| |
− | (custom-set-faces
| |
− | ;; custom-set-faces 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.
| |
− | )
| |
− | | |
− | ;;;; c mode ;;;;
| |
− | (defvar xgp-cfsi-left-PAREN-old nil
| |
− | "Command used to input \"(\"")
| |
− | (make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)
| |
− | | |
− | (defun xgp-cfsi-modify-alist (alist term new)
| |
− | (let ((tl (assq term (symbol-value alist))))
| |
− | (if tl
| |
− | (setcdr tl new)
| |
− | (add-to-list alist (cons term new)))))
| |
− | | |
− | (defun xgp-cfsi (style)
| |
− | "Deciding whether using CFSI."
| |
− | (interactive "Style: ")
| |
− | (c-set-style style)
| |
− | (setq indent-tabs-mode
| |
− | nil
| |
− | c-hanging-semi&comma-criteria
| |
− | (quote (c-semi&comma-inside-parenlist)))
| |
− | | |
− | (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
| |
− | (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
| |
− | (local-set-key " " 'self-insert-command))
| |
− | | |
− | (defun xgp-cfsi-erase-blanks ()
| |
− | "Erase all trivial blanks for CFSI."
| |
− | (interactive)
| |
− | (save-excursion
| |
− | (goto-char (point-min))
| |
− | (while (re-search-forward "[ \t]+$" nil t)
| |
− | (replace-match "" nil nil))))
| |
− | | |
− | (defun linux-c-mode()
| |
− | (define-key c-mode-map [return] 'newline-and-indent)
| |
− | (setq imenu-sort-function 'imenu--sort-by-name)
| |
− | (interactive)
| |
− | (imenu-add-menubar-index)
| |
− | (which-function-mode)
| |
− | (c-toggle-auto-state)
| |
− | (c-toggle-hungry-state)
| |
− | (setq indent-tabs-mode nil)
| |
− | (xgp-cfsi "linux"))
| |
− | (add-hook 'c-mode-common-hook 'linux-c-mode)
| |
− | ;; 代码补全
| |
− | (add-hook 'c-mode-hook 'company-mode)
| |
− | (add-hook 'c++-mode-hook 'company-mode)
| |
− | | |
− | | |
− | # other
| |
− | 如果要一次移动若干个单位,可以给命令加上数值参数,通过C-u命令,如:C-u 8 C-n就表示往下移8行,C-u 10 M-e表示往后移10句。不过C-u的参数对C-v和M-v命令而言有特殊,它不表示上下翻多少页,而是表示上下滚动多少行。注意与C-n的区别,C-u 8 C-n表示光标下移8行,屏幕不一定会滚动,而C-u 8 C-v,表示屏幕滚动8行,如果光标没有滚到屏幕外的话,光标位置不变。
| |
− | 如果不给C-u带上数值,则默认的值是4。比如C-u C-n就表示下移4行。这一特性还可以重复使用C-u C-u C-p就表示上移16行,C-u C-u C-u C-f表示右移64个字符。
| |
− | 前面讲了用C-g可以中断当前的命令,这次再补充一点,有时候C-g不灵时,可以按三次<Esc>键达到相同的目的。
| |
− | </pre>
| |
− | | |
− | ====kali本本配置====
| |
− | <pre>
| |
− | ;;cat ~/.emacs
| |
− | | |
− | ;; 关闭工具栏,tool-bar-mode 即为一个 Minor Mode
| |
− | (tool-bar-mode 0)
| |
− | (menu-bar-mode 0)
| |
− | (scroll-bar-mode 0)
| |
− | (tool-bar-mode -1)
| |
− | | |
− | | |
− | | |
− | (setq column-number-mode t)
| |
− | (setq column-number-mode 1)
| |
− | (setq line-number-mode 1)
| |
− | ;; 显示行号
| |
− | (global-linum-mode 1)
| |
− | ;; 在 mode line 上显示行列号
| |
− | (setq column-number-mode 1)
| |
− | (setq line-number-mode 1)
| |
− | | |
− | ;;显示列号
| |
− | (setq column-number-mode t)
| |
− | | |
− | ;; 显示行号
| |
− | (global-linum-mode 1)
| |
− | | |
− | ;; 取消滚动栏,工具栏
| |
− | (tool-bar-mode 0)
| |
− | (menu-bar-mode 0)
| |
− | (scroll-bar-mode 0)
| |
− | | |
− | ;; 关闭emacs启动时的页面
| |
− | (setq inhibit-startup-message 1)
| |
− | (setq gnus-inhibit-startup-message 1)
| |
− | ;; 以 y/n代表 yes/no
| |
− | (fset 'yes-or-no-p 'y-or-n-p)
| |
− | ;;; 设置备份策略
| |
− | (setq make-backup-files t)
| |
− | (setq kept-old-versions 2)
| |
− | (setq kept-new-versions 2)
| |
− | (setq delete-old-versions t)
| |
− | (setq backup-directory-alist '(("" . "~/.emacsbackup")))
| |
− | | |
− | ;; 公共插件配置
| |
− | ;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
| |
− | (require 'package)
| |
− | (add-to-list 'package-archives
| |
− | '("melpa" . "http://melpa.milkbox.net/packages/") t)
| |
− | (package-initialize)
| |
− | | |
− | ;;内置的package管理,emacs24以上的版本有用
| |
− | (require 'package)
| |
− | ;;将melpa仓库地址加入到package-archives这个列表变量里面
| |
− | (add-to-list 'package-archives
| |
− | '("melpa" . "http://melpa.org/packages/") t)
| |
− | ;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
| |
− | (add-to-list 'package-archives
| |
− | '("popkit" . "http://elpa.popkit.org/packages/") t)
| |
− | ;;初始化package
| |
− | (package-initialize)
| |
− | ;;更新仓库里面的package
| |
− | (when (not package-archive-contents)
| |
− | (package-refresh-contents))
| |
− | (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.
| |
− | '(package-selected-packages (quote (company auto-complete autopair))))
| |
− | (custom-set-faces
| |
− | ;; custom-set-faces 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.
| |
− | )
| |
− | | |
− | ;;;; c mode ;;;;
| |
− | (defvar xgp-cfsi-left-PAREN-old nil
| |
− | "Command used to input \"(\"")
| |
− | (make-variable-buffer-local 'xgp-cfsi-left-PAREN-old)
| |
− | | |
− | (defun xgp-cfsi-modify-alist (alist term new)
| |
− | (let ((tl (assq term (symbol-value alist))))
| |
− | (if tl
| |
− | (setcdr tl new)
| |
− | (add-to-list alist (cons term new)))))
| |
− | | |
− | (defun xgp-cfsi (style)
| |
− | "Deciding whether using CFSI."
| |
− | (interactive "Style: ")
| |
− | (c-set-style style)
| |
− | (setq indent-tabs-mode
| |
− | nil
| |
− | c-hanging-semi&comma-criteria
| |
− | (quote (c-semi&comma-inside-parenlist)))
| |
− | | |
− | (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-open nil)
| |
− | (xgp-cfsi-modify-alist 'c-hanging-braces-alist 'class-close nil)
| |
− | (local-set-key " " 'self-insert-command))
| |
− | | |
− | (defun xgp-cfsi-erase-blanks ()
| |
− | "Erase all trivial blanks for CFSI."
| |
− | (interactive)
| |
− | (save-excursion
| |
− | (goto-char (point-min))
| |
− | (while (re-search-forward "[ \t]+$" nil t)
| |
− | (replace-match "" nil nil))))
| |
− | | |
− | (defun linux-c-mode()
| |
− | (define-key c-mode-map [return] 'newline-and-indent)
| |
− | (setq imenu-sort-function 'imenu--sort-by-name)
| |
− | (interactive)
| |
− | (imenu-add-menubar-index)
| |
− | (which-function-mode)
| |
− | (c-toggle-auto-state)
| |
− | (c-toggle-hungry-state)
| |
− | (setq indent-tabs-mode nil)
| |
− | (xgp-cfsi "linux"))
| |
− | (add-hook 'c-mode-common-hook 'linux-c-mode)
| |
− | ;; 代码补全
| |
− | (add-hook 'c-mode-hook 'company-mode)
| |
− | (add-hook 'c++-mode-hook 'company-mode)
| |
− | | |
− | ;; py
| |
− | (setq tab-width 4)
| |
− | (set-variable 'python-indent-offset 4)
| |
− | ;;(set-variable 'python-indent-guess-indent-offset nil)
| |
− | </pre>
| |
− | | |
− | == 不错的配置==
| |
− | <pre>
| |
− | mv ~/.emacs.d ~/.emacs.d.bak
| |
− | git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d
| |
− | </pre>
| |
− | https://github.com/seagle0128/.emacs.d
| |
− | | |
− | | |
− | | |
− | === c 常用命令===
| |
− | emacs中很多命令都对C语言格式支持,补充几个命令M-x c-mode 当无法识别C语法格式的文件,可以强制打开C mode语法高亮C-M-p 跳转到}或)匹配的括号C-M-n 跳转到(或{匹配的括号M-x indent-region 自动缩进选定的区域C-c C-c 注释掉整个区域C-u C-c C-c 取消注释C-c C-u 跳转到前面的一个#ifdef C-c C-n 跳转到宏的开头或结尾C-c C-e 扩展宏编译排错:C-x ` (出错信息中)下一个错误,一个窗口显示错误信息,另一个显示源码的出错位置C-c C-c 转到出错位置调试:启动gdb调试器后,光标在源码文件缓冲区中时:C-x SPC 在当前行设置断点gdb在emacs中调用调试并不完美,有时候会出一些异常的情况。工作中如果emacs作为IDE用的话,一般在远程终端字符环境下更合适,如果作为专业的图形化IDE,codeblock等更合适,eclipse+CDT也是一种选择。
| |
− | | |
− | === c 配置文件===
| |
− | <pre>
| |
− | ;; 配置文件 for c or c ++
| |
− | ;; cat ~/.emacs
| |
− | | |
− | ;; 在 mode line 上显示行列号
| |
− | (setq column-number-mode 1)
| |
− | (setq line-number-mode 1)
| |
− | | |
− | ;;显示列号
| |
− | (setq column-number-mode t)
| |
− | | |
− | ;; 显示行号
| |
− | (global-linum-mode 1)
| |
− | | |
− | ;; 取消滚动栏,工具栏
| |
− | ;;(tool-bar-mode 0)
| |
− | ;;(menu-bar-mode 0)
| |
− | ;;(scroll-bar-mode 0)
| |
− | | |
− | ;; 关闭emacs启动时的页面
| |
− | (setq inhibit-startup-message 1)
| |
− | (setq gnus-inhibit-startup-message 1)
| |
− | ;; 以 y/n代表 yes/no
| |
− | (fset 'yes-or-no-p 'y-or-n-p)
| |
− | ;;; 设置备份策略
| |
− | (setq make-backup-files t)
| |
− | (setq kept-old-versions 2)
| |
− | (setq kept-new-versions 2)
| |
− | (setq delete-old-versions t)
| |
− | (setq backup-directory-alist '(("" . "~/.emacsbackup")))
| |
− | | |
− | ;; 公共插件配置
| |
− | ;; 设置 package system,这里使用 MELPA,里面的包可以说是应有尽有
| |
− | (require 'package)
| |
− | (add-to-list 'package-archives
| |
− | '("melpa" . "http://melpa.milkbox.net/packages/") t)
| |
− | (package-initialize)
| |
− | | |
− | | |
− | </pre>
| |
− | | |
− | [https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置2018]
| |
− | | |
− | ==from tour ==
| |
− | <pre>
| |
− | #这些笔记完全作到wiki么 会不会太多 而没有重点的感觉
| |
− | | |
− | * 如果 EMACS 失去响应(IF EMACS STOPS RESPONDING)
| |
− | -----------------------------------------------
| |
− | 如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。C-g
| |
− | 也可以终止一条执行过久的命令。
| |
− | | |
− | C-g 还可以取消数字参数和只输入到一半的命令。
| |
− | | |
− | >> 输入 C-u 100 设定一个值为 100 的数字参数,然后按 C-g。
| |
− | 现在再按 C-f,光标应该只会移动一个字符,因为你已经用 C-g 取消了参数。
| |
− | | |
− | 如果你不小心按了一下 <ESC>,你也可以用 C-g 来取消它。
| |
− | 【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。
| |
− | 取消 <ESC> 的正确做法是再连按两次 <ESC>。】
| |
− | | |
− | | |
− | * 插入与删除(INSERTING AND DELETING)
| |
− | --------------------------------------
| |
− | | |
− | ,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的
| |
− | 命令。重复执行输入字符的命令实际上就是输入多个相同的字符。
| |
− | | |
− | >> 试试 C-u 8 *,这将会插入 ********。
| |
− | | |
− | 好,现在你应该已经掌握了最基本的的文本插入和修改功能,其实删除还可以
| |
− | “以词为单位”进行,下面是一个关于“删除”操作的小结:
| |
− | | |
− | <DEL> 删除光标前的一个字符
| |
− | C-d 删除光标后的一个字符
| |
− | | |
− | M-<DEL> 移除光标前的一个词
| |
− | M-d 移除光标后的一个词
| |
− | | |
− | C-k 移除从光标到“行尾”间的字符
| |
− | M-k 移除从光标到“句尾”间的字符
| |
− | | |
− | 【可能你已经注意到了“删除(delete)”和“移除(kill)”的用词区别,后
| |
− | 文会有详细说明。】
| |
− | | |
− | 注意“<DEL> 和 C-d”还有“M-<DEL> 和 M-d”是根据前述惯例从 C-f和 M-f 衍生的
| |
− | 出来的(其实<DEL>不是控制字符,我们先忽略这一点)。C-k和 M-k 的关系在
| |
− | 某种程度上与 C-e 和 M-e 一样――如果把“一行”和“一句”作一个类比的话。
| |
− | | |
− | | |
− | 你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
| |
− | 想要移除的区域的一端,然后按 C-<SPC>(<SPC>指空格)【注意,C-<SPC> 往
| |
− | 往被中文用户设定成输入法热键,如果这样,C-<SPC> 就被系统拦截而无法传递
| |
− | 给 Emacs 了,在这种情况下可以使用C-@。】,然后将光标移动到你准备移除的
| |
− | 文字的另一端。这个时候, Emacs 会高亮光标和你按下 C-<SPC> 之间的文本。
| |
− | 最后,按下 C-w 。这样就可以把位于这两点之间的所有文字移除了。
| |
− | | |
− | | |
− | 注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以被重新
| |
− | 插入(在任何位置),而被删除的就不能使用相同的方法重新插入了(不过可以
| |
− | 通过撤销一个删除命令来做到,后文会提到)。
| |
− | | |
− | | |
− | 重新插入被移除的文字称为“召回(yank)
| |
− | | |
− | | |
− | 召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。
| |
− | | |
− | | |
− | C-y 可以召回最近一次移除的内容,那如何召回前几次移除的内容呢?它们当然
| |
− | 没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除的文字之后,紧接
| |
− | 着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上
| |
− | 一次的……连续使用 M-y 直到找到你想要召回的东西,然后什么也不用做,继续
| |
− | 编辑就行了。
| |
− | | |
− | 如果连续按 M-y 很多次,你可能会回到起始点,也就是最近移除的文字。
| |
− | 【看得出这实际上是一个环。】
| |
− | | |
− | >> 移除一行,移动一下光标,然后再移除另外一行。
| |
− | 按 C-y 将第二次移除的那行召回来。
| |
− | 紧接着再按 M-y,它将会被第一次移除的那行取代。
| |
− | 试着再按几下 M-y 看看会发生什么。
| |
− | 再继续,直到第二行被召回来,然后再做个几次。
| |
− | 如果感兴趣,你可以试着给 M-y 指定一个正的或负的参数。
| |
− | | |
− | | |
− | * 撤销(UNDO)
| |
− | --------------
| |
− | 如果你修改了一段文字,又觉得改得不好,可以用 undo 命令进行撤销:C-/。
| |
− | 另外, C-x u 和 C-/ 完全一样,但是按起来有些麻烦。
| |
− | | |
− | * 文件(FILE)
| |
− | --------------
| |
− | | |
− | | |
− | * 缓冲区(BUFFER)
| |
− | ------------------
| |
− | | |
− | 你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要
| |
− | 切回第一个文件,一种办法是再用一次 C-x C-f。这样,你就可以在 Emacs 中同
| |
− | 时打开多个文件。
| |
− | 不过还有一个更简单的办法,那就是用 C-x b。用这条命
| |
− | 令,你必须输入缓冲区的名称。(如果是返回默认的第一个不用名称)
| |
− | | |
− | | |
− | >> 通过输入 C-x C-f foo <Return> 创建一个名为“foo”的文件。
| |
− | 然后输入 C-x b TUTORIAL.cn <Return> 回到这里。
| |
− | | |
− | | |
− | | |
− | C-x s 保存多个缓冲区
| |
− | | |
− | | |
− | 输入 C-x 1 离开缓冲区列表
| |
− |
| |
− |
| |
− |
| |
− | * 命令集扩展(EXTENDING THE COMMAND SET)
| |
− | -----------------------------------------
| |
− | C-x 字符扩展。 C-x 之后输入另一个字符或者组合键。
| |
− | M-x 命令名扩展。M-x 之后输入一个命令名。
| |
− | | |
− | C-z 可以暂时离开 Emacs――当然,你还可以再回来。
| |
− |
| |
− | C-x 的扩展命令有很多,下面列出的是你已经学过的:
| |
− | | |
− | C-x C-f 寻找文件。
| |
− | C-x C-s 保存文件。
| |
− | C-x C-b 列出缓冲区。
| |
− | C-x C-c 离开 Emacs。
| |
− | C-x 1 关掉其它所有窗格,只保留一个。
| |
− | C-x u 撤销。
| |
− | | |
− | | |
− | | |
− | * 自动保存(AUTO SAVE)
| |
− | -----------------------
| |
− | | |
− | 所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
| |
− | 存文件)然后输入 M-x recover file <Return> 来恢复你的自动保存文件。在
| |
− | 提示确认的时候,输入 yes<Return>。
| |
− | | |
− | | |
− | * 状态栏(MODE LINE)
| |
− | ---------------------
| |
− | | |
− | “L” 和其后的数字给出了光标所在行的行号。
| |
− | | |
− | 最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动
| |
− | 过,所以状态栏上显示的不是星号而是短线(-)。
| |
− | | |
− | 状态栏上小括号里的内容告诉你当前正在使用的编辑模式。缺省的模式是
| |
− | Fundamental,就是你现在正在使用的这个。它是一种“主模式”。
| |
− | | |
− | | |
− | 用 C-l C-l 将本行带到屏幕的最上方。
| |
− | | |
− | | |
− | | |
− | * 搜索(SEARCHING)
| |
− | -------------------
| |
− | | |
− | C-s 是向前搜索,C-r 是向后搜索。不过手别这么快!别着急试。
| |
− | | |
− | 在按下 C-s 之后,回显区里会有“I-search”字样出现,表明目前 Emacs 正处
| |
− | 于“渐进搜索”状态,并等待你输入搜索字串。按 <Return> 可以结束搜索。
| |
− | | |
− | >> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
| |
− | 慢慢输入“ccusor”这个词,每敲一个字都停顿一下并观察光标。
| |
− | 现在你应该已曾经找到“ccusor”这个词了。
| |
− | >> 再按一次 C-s,搜索下一个“ccusor”出现的位置。
| |
− | >> 现在按四次 <DEL> ,看看光标是如何移动的。
| |
− | >> 敲 <Return> 结束搜索。
| |
− | | |
− | 看仔细了么?在一次渐进式搜索中,Emacs 会尝试跳到搜索目标出现的位置。要
| |
− | 跳到下一个命中位置,就再按一次 C-s。如果找不到目标,Emacs 会发出“哔”
| |
− | 的一声,告诉你搜索失败。在整个过程中,都可以用 C-g 来终止搜索。【你会发
| |
− | 现 C-g 会让光标回到搜索开始的位置,而 <Return> 则让光标留在搜索结果上,
| |
− | 这是很有用的功能。】
| |
− | | |
− | 在渐进式搜索中,按 <DEL> 会“撤回”到最近一次搜索的命中位置。如果之前没
| |
− | 有一个命中, <DEL> 会抹去搜索字符串中的最后一个字符。比如你已经输入了
| |
− | “c”,光标就停在“c”第一次出现的位置,再输入“u”,光标停在“cu”第一次出现
| |
− | 的位置,这时再按 <DEL> ,“u”就从搜索字串中消失了,然后光标会回到“c”第
| |
− | 一次出现的位置。
| |
− | | |
− | | |
− | * 多窗格(MULTIPLE WINDOWS)
| |
− | ----------------------------
| |
− | | |
− | > 移动光标到这一行,然后输入 C-l C-l。
| |
− | | |
− | >> 现在输入 C-x 2,它会将屏幕划分成两个窗格。
| |
− | 这两个窗格里显示的都是本篇快速指南,而光标则停留在上方的窗格里。
| |
− | | |
− | >> 试试用 C-M-v 滚动下方的窗格。
| |
− | (如果你并没有 META 键,用 ESC C-v 也可以。)
| |
− | 【向上滚动是 C-M-S-v,也就是同时按住 CONTROL、META 和 SHIFT 再按 v】
| |
− | | |
− | >> 输入 C-x o(“o”指的是“其它(other)”),
| |
− | 将光标转移到下方的窗格。
| |
− | | |
− | >> 在下方的窗格中,用 C-v 和 M-v 来滚动。
| |
− | 同时继续在上方的窗格里阅读这些指导。
| |
− | | |
− | | |
− | C-M-v 是一个 CONTROL-META 组合键。如果你有 META (或 Alt)键的话,可以
| |
− | 同时按住CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,
| |
− | 因为它们只是用来“修饰(modify)”你输入的字符的。
| |
− | | |
− | | |
− | >> (在上方窗格里)输入 C-x 1 关掉下方窗格。
| |
− | | |
− | (如果你在下方的窗格里输入 C-x 1,那么就会关掉上方的窗格。你可以把这个
| |
− | 命令看成是“只保留一个窗格”――就是我们正在编辑的这个。)
| |
− | | |
− | 不同的窗格可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了一个
| |
− | 文件,另一个窗格并不会发生什么变化。任何一个窗格里都可以用来打开文件。
| |
− | | |
− | | |
− | * 多窗口(MULTIPLE FRAMES)
| |
− | ------------------
| |
− | | |
− | | |
− | * 更多精彩(MORE FEATURES)
| |
− | ---------------------------
| |
− | | |
− | 想学习更多的使用技巧,Emacs 使用手册(manual)值得一读。你可以读纸版的
| |
− | 书,也可以在 Emacs 中读(可以从 Help 菜单进入或者按 C-h r)。提两个你
| |
− | 可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自动补全),
| |
− | 另一个是方便文件处理的 dired(目录编辑)。
| |
− | | |
− | Completion 可以替你节省不必要的键盘输入。比如说你想切换到 *Message* 缓
| |
− | 冲区,你就可以用 C-x b *M<Tab> 来完成。只要 Emacs 能够根据你已经输入的
| |
− | 文字确定你想要输入的内容,它就会自动帮你补齐。Completion 也可用于命令
| |
− | 名和文件名。有关 Completion 的详细说明可以在 Emacs Info 中的
| |
− | “Completion”一节里找到。
| |
− | | |
− | Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以选择是否也列出子
| |
− | 目录),然后你可以在这个文件列表上完成对文件的移动、访问、重命名或删除
| |
− | 等等操作。Dired 也在 Emacs 使用手册中有详细介绍,参见“Dired”一节。
| |
− | | |
− | | |
− | 下面列出主要术语的译词对照,并给出注释说明:
| |
− | | |
− | command 命令
| |
− | cursor 光标
| |
− | scrolling 滚动
| |
− | numeric argument 数字参数
| |
− | window 窗格 [1]
| |
− | insert 插入
| |
− | delete 删除 [2]
| |
− | kill 移除 [2]
| |
− | yank 召回 [2]
| |
− | undo 撤销
| |
− | file 文件
| |
− | buffer 缓冲区
| |
− | minibuffer 小缓冲
| |
− | echo area 回显区
| |
− | mode line 状态栏
| |
− | search 搜索
| |
− | incremental search 渐进式搜索 [3]
| |
− | | |
− | | |
− | 20180313 ln 792
| |
− | here
| |
− | | |
− | | |
− | M-x replace-string ENTER search-string ENTER 替换
| |
− |
| |
− | | |
− | | |
− | 用 <Return> 结束文件名的输入
| |
− | Return 这里是什么意思呢 回车么
| |
− | | |
− | | |
− | Alt + x
| |
− | 输入: linum-mode
| |
− | | |
− | | |
− | | |
− | emacs中如何跳到指定行
| |
− | | |
− | M-x goto-line 然后回车 <line_number>
| |
− | | |
− | 以在.emacs文件中定制一下(添加以下一行):
| |
− | | |
− | (define-key ctl-x-map "l" 'goto-line)
| |
− | | |
− | | |
− | 然后每次在emacs中按C-x再按l,输入指定的行号就可以了。
| |
− | | |
− | http://blog.csdn.net/grey_csdn/article/details/78905862
| |
− | http://bbs.csdn.net/topics/60028785
| |
− | </pre>
| |
− | ==package ==
| |
− | <pre>
| |
− | | |
− | 也可以使用命令M-x list-packages获取插件列表,使用C-s找到 软件名例如叫 elpy 来安装
| |
− | | |
− | | |
− | ;内置的package管理,emacs24以上的版本有用
| |
− | (require 'package)
| |
− | ;;将melpa仓库地址加入到package-archives这个列表变量里面
| |
− | (add-to-list 'package-archives
| |
− | '("melpa" . "http://melpa.org/packages/") t)
| |
− | ;;这个是国内一个elpa仓库镜像,速度更快一些,你懂得
| |
− | (add-to-list 'package-archives
| |
− | '("popkit" . "http://elpa.popkit.org/packages/") t)
| |
− | ;;初始化package
| |
− | (package-initialize)
| |
− | ;;更新仓库里面的package
| |
− | (when (not package-archive-contents)
| |
− | (package-refresh-contents))
| |
− | </pre>
| |
− | | |
− | ===常用操作===
| |
− | <pre>
| |
− | Alt+x list-packages
| |
− | | |
− | 可以先用C-s向下搜索 autopair
| |
− | 找到后 回来后 按i再按x就下载到本地了。然后打开emacs的配置文件init.el,在里面添加下面:
| |
− | | |
− | 常用快捷键
| |
− | i - 选择要安装的包
| |
− | d - 选择要删除的包
| |
− | U - 升级已安装的包
| |
− | x - 执行操作
| |
− | d - 选择要删除的包
| |
− | </pre>
| |
− | | |
− | [http://longlycode.github.io/2016/02/02/emacs%E5%AE%8C%E5%85%A8%E8%A1%A5%E5%AE%8C%E8%AE%A1%E5%88%92-%E4%B8%89/ emacs完全补完计划(三)——package的引入和管理]
| |
− | | |
− | == 高级==
| |
− | | |
− | | |
− | ===Edit mediawiki sites from emacs ===
| |
− | [https://github.com/hexmode/mediawiki-el mediawiki.el -- Edit mediawiki sites from emacs]
| |
− | | |
− | ==emacs 学习==
| |
− | | |
− | [https://www.cnblogs.com/holbrook/archive/2012/02/15/2357336.html Emacs学习笔记(1):初学者的学习计划]
| |
− | | |
− | [https://www.cnblogs.com/holbrook/archive/2012/03/06/2381636.html Emacs学习笔记(7):简单的配置]
| |
− | | |
− | [https://www.cnblogs.com/holbrook/archive/2012/02/15/2357335.html Emacs学习笔记(2): 初识Emacs]
| |
− | | |
− | [https://www.cnblogs.com/holbrook/tag/emacs/ emacs 学习标签 ]
| |
− | | |
− | == 参考==
| |
− | [https://my.oschina.net/alphajay/blog/7737 Emacs快捷键的总结]
| |
− | | |
− | [https://segmentfault.com/a/1190000003811296 走近emacs 201801]
| |
− | | |
− | [http://blog.csdn.net/cherylnatsu/article/details/6536959 Emacs常用命令快速参考]
| |
− | | |
− | [https://www.ibm.com/developerworks/cn/education/aix/emacs1-1/index.html 学习 Emacs 的基础知识]
| |
− | | |
− | [https://github.com/redguardtoo/mastering-emacs-in-one-year-guide 一年成为 Emacs 高手 ]
| |
− | | |
− | http://emacser.com/
| |
− | | |
− | Emacs 入门
| |
− | https://i.linuxtoy.org/docs/guide/ch25.html
| |
− | | |
− | [https://www.emacswiki.org/emacs/%E9%A6%96%E9%A1%B5 emacswiki]
| |
− | | |
− | Emacs org mode
| |
− | https://i.linuxtoy.org/docs/guide/ch32s03.html#id3155525
| |
− | | |
− | | |
− | https://www.emacswiki.org/emacs?interface=zh-cn
| |
− | | |
− | https://www.cnblogs.com/blfshiye/p/4566900.html
| |
− | | |
− | | |
− | https://www.gnu.org/software/emacs/manual/html_node/efaq/Installing-Emacs.html
| |
− | | |
− | [https://www.gnu.org/software/emacs/tour/index.html A Guided Tour of Emacs]
| |
− | | |
− | Emacs - the Best Python Editor https://realpython.com/blog/python/emacs-the-best-python-editor/
| |
− | | |
− | Emacs:最好的Python编辑器 http://codingpy.com/article/emacs-the-best-python-editor/
| |
− | | |
− | [https://wiki.archlinux.org/index.php/Emacs_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E8.BF.90.E8.A1.8CEmacs Emacs (简体中文)]
| |
− | | |
− | [http://ergoemacs.org/emacs/emacs_package_system.html How to Install Packages Using ELPA, MELPA]
| |
− | | |
− | [http://www.cnblogs.com/xiaosha/p/3366422.html emacs python 配置]
| |
− | | |
− | [https://maskray.me/blog/2015-09-18-conversion-to-emacs 皈依Emacs]
| |
− | | |
− | [https://elloop.github.io/tools/2016-03-01/emacs-accumulate-5-packages-extensions 【积水成渊-逐步定制自己的Emacs神器】3:为Emacs安装扩展]
| |
− | | |
− | ===wiki ===
| |
− | Wiki编辑器, 通过 Yaoddmuse 几乎能支持所有的Wiki格式, 实时语法高亮, 你不用担心保存以后确发现格式错了
| |
− | | |
− | https://www.emacswiki.org/emacs/Yaoddmuse
| |
− | | |
− | [https://blog.csdn.net/freexploit/article/details/572224 用Emacs Wiki帮你写Blog]
| |
− | | |
− | ===2019===
| |
− | [http://longlycode.github.io/2016/01/28/emacs%E5%AE%8C%E5%85%A8%E8%A1%A5%E5%AE%8C%E8%AE%A1%E5%88%92-%E4%B8%80-1/ emacs完全补完计划(一)——嘴炮和入门]
| |
− | | |
− | | |
− | | |
− | [http://jixiuf.github.io/blog/emacs-%E8%87%AA%E5%B8%A6%E7%9A%84%E7%AE%80%E5%8D%95%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B%28tutorial%29/ emacs 自带的简单入门教程(TUTORIAL)]
| |
− | | |
− | [http://www.cnblogs.com/Open_Source/archive/2011/07/17/2108747.html Org-mode 简明手册]
| |
− | | |
− | [http://blog.csdn.net/grey_csdn/article/category/7131378/5 小灰笔记 emacs]
| |
− | | |
− | [https://www.jianshu.com/p/b4cf683c25f3 从零开始——Emacs 安装配置使用教程 2015]
| |
− | | |
− | | |
− | [https://www.zhihu.com/question/30955165 Emacs有什么优点,用Emacs写程序真的比IDE更方便吗]
| |
− | | |
− | === 参考 for python===
| |
− | [http://codingpy.com/article/emacs-the-best-python-editor/ Emacs:最好的Python编辑器]
| |
− | === 参考 for c===
| |
− | [https://segmentfault.com/a/1190000003878553 Emacs 中 C/C++ 编程基本环境配置]
| |
− | | |
− | [http://txgcwm.github.io/blog/2013/07/20/jiang-emacspei-zhi-cheng-%5B%3F%5D-ge-c-slash-c-plus-plus-de-idebian-cheng-huan-jing/#top 将Emacs配置成一个C/C++的IDE编程环境]
| |
− | | |
− | [http://blog.guorongfei.com/2014/09/16/emacs-c-cpp-python-config/ Emacs C、C++、Python 编程的简单配置]
| |
− | [[category:ops]] [[category:emacs]] | |