Emacs-Lisp
快捷键顺带built-in函数变量什么的
求值
C-x C-e
;; eval()
;; => eval-last-sexp-1(nil)
;; => eval-last-sexp(nil)
;; => call-interactively(eval-last-sexp)
'(rose violet daidy buffercup)
死循环
C-g可以强制退出函数
编译
将el配置编译成字节码可以加快Emacs的加载速度, 特别是在配置文件特别多的时候。
(byte-compile-file *.el) ;; => *.elc
(byte-recompile-directory "directory/" 0 t) ;; => */*.elc (-R)
(byte-recompile-directory "~/.emacs.d/" 0 t)
;; C-u 0 M-x byte-recompile-directory ;; */*.el => */*.elc (-R)
或者
打开dired,然后输入% m来调用dired-mark-files-regexp 然后输入.el来标记所有的配置文件 然后按B调用dired-do-byte-compile就可以把一个目录下面的el一次性编译成elc
变量
fill-column ;; 一行的最大文字量(会发生麻烦的自动换行)
函数
定位
(point-min) ;; About Narrowing
(message "pos/size: %d/%d" (point) (buffer-size))
Buffer
(buffer-name) ;; String
(set-buffer (buffer-name)) ;; == (current-buffer), Object
(other-buffer) ;; switched back from most recently
(switch-to-buffer (other-buffer)) ;; C-x b
(message "current-buffer: %s\nbuffer-name: %s\nbuffer-file-name: %s"
(current-buffer) (buffer-name) (buffer-file-name))
字符串
(concat "abc" "def") ;; => "abcdef"
(substring "Get Middle String" 4 10) ;; => "Middle"
颜色
大概就装逼用
(highlight-phrase "trees" "hi-pink") ;; M-s h p
(highlight-regexp "^trees$" "hi-yellow") ;; M-s h r
(highlight-lines-matching-regexp "trees" "hi-green") ;; M-s h l
(unhighlight-regexp) ;; M-s h u
快捷键组合
C-u 将下一个stdout重定向到光标处 M-! 运行一句shell M-& 异步运行shell命令 M-: 运行一句lisp
于是可以组合成一系列快捷键
C-u M-! date 插入当前时间
还有一些
C-q C-i 插入tab C-x <RET> f utf-8 设置当前buffer的文件的编码(set-buffer-file-coding-system) C-x C-t 与上一行交换 M-h 标记一段 M-x sort-lines 排序选中行 C-x C-v 重新打开当前文件(find-alternate-file) C-x z 重复上一条命令(可以一直按z不断执行, 非常方便....吗?) C-h C-a About-Emacs M-x list-colors-display 显示Emacs所有的颜色
没有看懂
C-M-h 标记一个函数定义 C-h C 查看当前文件的编码
以及一些
M-x dig M-x ifconfig M-x ping M-x telnet
Org-mode
导出
批量导出(就是在shell里用emacs的funcall), 参见这里
$ emacs --batch index.org --funcall org-export-as-html
$ emacs --load ~/.emacs.d/modes/org-html.el --batch index.org --funcall org-export-as-html
COMMENT 插件
其他
magit,在Emacs中方便友好地使用git。 git-gutter可以实时显示当前文件的diff。而且可以快速跳到相对于上一次commit修改的部分。 projectile,超好用的项目辅助工具,可以快速在当前项目搜索、打开文件、编译等等。 emacs-helm-gtags12,可以配合gtags快速跳转到定义等。 nginx-mode,可以语法高亮nginx的配置文件。 httpcode,速查http状态码 像Git-timemachine,可以直接查看文件的不同版本历史 simple-httpd Lisp 写的 Web 服务器 elnode git-gutter.el 标记版本控制的diff(支持subversion) 没有 bookmark+ 把常用文件加入书签 buffer-move 很好用 Swap buffers without typing C-x b on each window desktop 保存当前的工作状态。 dired+ 超好用。 eldoc-extension 写elisp时会有文档提示 git-gutter-fringe 实时显示文件的修改状态(和git diff作用类似) multiple-cursors 超好用。 smart-compile smarter-compile 智能编译
COMMENT eshell
一些看到的东西, 没机会测试
输入法
在英文版的系统里面, 一般情况下Emacs可能打不开中文输入法, 此时我们需要修改LC_CTYPE环境变量就好了。 也就是在~/.profile最后加上一句
export LC_CTYPE="zh_CN.UTF-8"
编辑远程文件
TRAMP的全写为:Transparent Remote (file) Access, Multiple Protocol。
在TRAMP的帮助下,我们可以很容易做到无缝编辑远程文件。
查看Emacs是否支持显示图片
(image-type-available-p 'gif)
(image-type-available-p 'jpeg)
(image-type-available-p 'tiff)
(image-type-available-p 'xpm)
(image-type-available-p 'xbm)
(image-type-available-p 'pbm)
COMMENT 待阅
http://baike.baidu.com/link?url=Tc5sUJKi15EPxqpt08gVUeJeqd1juhmzDGSSdA2q0RS1pJ-s4c0ClXoZqD1ImKjqjduBKTLy-eWcypxncZ6haq http://baike.baidu.com/view/116805.htm http://songshuhui.net/archives/20161/ http://mindhacks.cn/2006/10/15/cantor-godel-turing-an-eternal-golden-diagonal/
http://orgmode.org/worg/org-contrib/org-special-blocks.html
http://everet.org/chrome-edit-with-emacs.html http://everet.org/emacs-project-manager.html http://everet.org/screenshot-and-image-paste-in-emacs-when-writing-markdown.html http://everet.org/emacs-markdown-display-image.html http://everet.org/guide-key.html
http://emacsrocks.com/e09.html
https://github.com/cedricporter/vim-emacs-setting/tree/master/emacs http://whattheemacsd.com/ http://emacsrocks.com/ http://planet.emacsen.org/ https://github.com/emacs-tw/awesome-emacs