网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 高效的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只是比较方便,比较自由而已,比较能折腾而已,要从实用角度出发,而不是做一个脑残粉。
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/15 1:18:54