Emacs手记

2016-07-25
3分钟阅读时长

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)
上一页 技巧向