标题 | 高效的emacs |
内容 | 这篇文章用来总结自己对emacs的理解。本人之前使用过vim和sublime,现在主要使用emacs。 Start 就编辑速度来说,是不会有编辑器比vim更快的了。我也常常将代码片段,或者日志,xml,考到sublime进行分析。多行编辑很实用。 但我在平时,主要还是使用emacs,无论是用它写博客,写代码,执行代码,写GTD,管理文档…都非常的方便。 键绑定 一个高效的编辑器,就是能够做到不用鼠标,编辑时在鼠标和键盘之间进行切换是一件很恼人的事情。这点在你抱着笔记本进行写作的时候会深有体会。 常用的快捷键:(C代表Ctrl,A代表Alt) C-n 向下移动一个字符 C-p 向上移动一个字符 C-b 向左移动一个字符 C-f 向右移动一个字符 A-b 向左移动一个单词 A-f 向右移动一个单词 C-a 移动到行首 C-e 移动到行尾 C-@ 设置选择下标 C-w 剪贴选中区域 A-w 复制选中区域 C-l 将光标所在行,作为中心行,刷屏 C-x H 全选整个缓冲区。 C-k 删除光标后的整行内容 C-d 删除一个字母 M-d 删除一个单词 C-_ Undo C-? Redo C-s 查找 A-j 换行,与上一行保持同样的缩进 A-< 移动到文件头部 A-> 移动到文件尾部 C-x 3 左右分屏 C-x 2 上下分屏 C-x 1 除此屏全部关闭 C-x 0 关闭此屏 A-/ 补全 其它的一些也是因为不常用,基本不会去记它们的。 除了emacs自己的keybinding,我还特意做了些键绑定,提高效率。 (global-set-key (kbd "C-M-h") 'backward-kill-word) ;; (bash中的回删单词,也是这三个键) (global-set-key (kbd "C-x f") 'recentf-ido-find-file) ;; (在最近打开文件列表中,选择要打开的文件,这个很实用) (global-set-key (kbd "C-x t") 'insert-current-date) ;; (插入当前日期,在写博客或者gtd的时候,经常用日期作为文件名的一部分) (global-set-key (kbd "<f8>") 'insert-current-file-fill-path) ;; (插入当前文件的完整路径,这个也比较实用) (global-set-key (kbd "M-g") 'goto-line) ;; (跳转到某一行,是没有vim中的:n快) (global-set-key (kbd "C-x w") 'copy-word) ;; (复制一个单词,只要光标落在单词上,就可以复制整个单词) 13 (global-set-key (kbd "C-x y") 'copy-line) 14 ;; (emacs是没有这个快捷键的,只能自己去实现了。在vim中,yy就可以了) 15 (global-set-key (kbd "C-c C-b") 'comment-or-uncomment-region) 16 ;; (快速的对代码进行注释与反注释) 17 (define-key global-map (kbd "C-c a") 'wy-go-to-char) 18 ;; (跳到此行的某个字母,vim的f和t,比这个快得多) 实用的多功能 多窗口编辑,文件管理器,都是emacs多功能的一部分。甚至还可以配置git等外部程序,仅仅打开一个emacs就够了。 我的emacs还配置了以下实用的多功能 ;; 快速的使用bing查找(直接在emacs中查找,然后就会弹出网页上的查找结果) (prelude-install-search-engine "bing" "=" "Search Bing:" ) (global-set-key (kbd "C-c b") 'prelude-bing) ;; emacs 弹窗 (我常常退弹出一个cmd,运行python,或者运行git) (defvar popup-terminal-command (cond ((memq system-type '(windows-nt cygwin)) '("cmd" "/c" "start" )) (t '("x-terminal-emulator")))) (defun popup-term () (interactive) (apply 'start-process "terminal" nil popup-terminal-command)) (global-set-key (kbd "<f5>") 'popup-term) 写博客 我的博客是使用jekyll进行搭建的,所以日常,基本就是用markdown编辑完之后,用git推送到服务器。 这里要提的就是snippet,因为jekyll扩展了一部分的markdown语法格式,配置成snippet后,快速的插入模板片段非常有用。 比如我的sinppet:hl就对应jekyll的语法高亮扩展。这要比markdown自带的语法高亮(缩进),功能强大一些。 markdown 高亮: if i == 3: print "人生苦短" else: print "我用python" jekyll 高亮: if i == 3: print "人生苦短" else: print "我用python" 写代码 我用emacs主要写的代码就是python,或者是其它的脚本,像是bash,反正我是不会用它写c#的,没有什么编辑器会比vs更适合写c#。 sinppet 是必不可少的了,python中能用到的snippet我都有配置,之前还配置过一部分和tornado相关的snippet。 我将emacs配置成可以弹窗出一个shell,我一般就在这个shell中执行python 或者直接弹出显示结果,但是这样不能错误信息,而且你的python代码末尾必须要有raw_input() 否则一闪 ;; emacs弹窗,执行,当前的python (defun popup-expython() (interactive) (let ((filename "test.py") (args (list "cmd" "/c" "start" "python" (buffer-name)))) (apply 'start-process "terminal" nil args))) (global-set-key (kbd "<f6>") 'popup-expython) 不仅仅是键盘绑定,这些有关编程的emacs配置,也值得一提。 ;; 好代码一行不应该超过80个字符 (add-hook 'python-mode-hook (lambda () (highlight-lines-matching-regexp ".\{81\}" "red"))) 还有我的emacs主题是zenburn,这种主题看起来不扎眼,代码高亮美观。很舒服。 写GTD 我对GTD的理解,是要单独写的,这里只介绍用emacs写gtd的一部分内容。 emacs使用org模式来写GTD,基本上可以看作是*做的一棵树,可以切TODO和DONE,展开,折叠,打标签。 这里插入我gtd的一部分: * Blog ** DONE 我应该将我购买的域名挂到自己的网站上 CLOSED: [2014-09-11 Thu 13:30] ** TODO 翻译相关内容 * Book ** DONE 写给上班族的世界史 CLOSED: [2014-09-05 周五 22:15] ** DONE 方与圆 CLOSED: [2014-09-21 周日 23:30] * 周末写两篇博客 ** DONE 使用python的函数式编程和c#的linq来实现操作,而非迭代器 CLOSED: [2014-11-24 周一 11:29] ** 写一篇关于c#的迭代器和python的迭代器, 不要神话emacs 之前在学习emacs和vim的时候,网上有许多文章神话这两个编辑器,说是什么神的编辑器和编辑器之神。 其实如果说智能,它们是不会比VS智能的,emacs和vim最多也就是文本匹配,而vs却真正的在内部构建代码对象。emacs只是比较方便,比较自由而已,比较能折腾而已,要从实用角度出发,而不是做一个脑残粉。 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。