windows设置emacs目录
在注册表中添加
HKLM/SOFTWARE/GUN/Emacs 添加项:emacs_dir 字符串 D:\Program Files\emacs-23.3
HKCU/SOFTWARE/GUN/Emacs 添加项:HOME 字符串 D:\Program Files\emacs-22.3\home
setHomel.reg
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\GNU]
[HKEY_CURRENT_USER\Software\GNU\Emacs]
"HOME"="C:\\emacs-home"
install.bat
@echo off
xcopy emacs-home /s c:\ /y
regedit /s setHome.reg.reg&&echo 导入成功||echo 导入失败
emacs-home\.emacs
(setenv "HOME" "D:/emacs-22.3/home")
;;set the default file path
(setq default-directory "~/")
(load-file "~/.emacs")
(add-to-list 'load-path "~/emacs/site-lisp")
宏命令
使用 "Ctrl+(" 开始录制宏命令,再使用 "Ctrl+)" 结束录制宏命令,使用 "Ctrl+u Ctrl+x e"执行宏命令 4 次。
编译cedet
打开cedet-1.0/cedet-build.el,查看说明:
emacs -Q -l cedet-build.el -f cedet-build
插入表格
M-x table-insert
graphviz图形文件编写
编译dot文件:C-c c;
预览编译后的图像文件:C-c p;
代码浏览
etags,emacs 23.3中默认安装了etags
(1) 生成ETAGS文件
为所有c和h文件生成tag:etags *.[ch]
为所有c、cpp和h文件生成tag:etags *.[ch]*
(2) 创建好tag表后,告知emacs
M-x visit-tags-table
(3) 浏览文件
M-.:跳到函数定义处
C-u M-.:查找下一个定义
M-*:回到上一次查找的位置
M-Tab:自动补齐函数名
跳转行
M-g g
将Tab转换成空格
选中要转换的区域,执行 M-x untabify
设定 emacs默认的 Tab 宽度为 4
(setq default-tab-width 4)
c++文件排版
C-c C-q
反向跳转到其他窗口
第一次Ctrl是和负号一起:C-- C-x o
安装w3m插件
参照:http://blog.csdn.net/neverforeverzy/archive/2010/12/16/6080187.aspx
注意,安装了w3m文件,还得安装emacsW32才行
Edit by emacs, wonderful!
列编辑
设置选择标记后,在要截取的地方,按“C-x y k”剪切文本 “C-x r y”粘贴文本
elisp
用如下命令,进入交互模式:
M-x lisp-interaction-mode
此时,你可以输入elisp程序行,例如:
(setq hello "Hello World!")
将光标置于语句最后,执行C-x C-e,立刻看到解析的值Hello World!显示在命令栏中,如果出现错误,会出现错误提示窗口。
也可以用C-j来求语句的值,结果会立刻显示在语句的下一行。
列表前的单引号,告诉Lisp不要对当前列表进行任何操作,仅仅是按原样
lisp是解释性语言,如定义一个变量然后查看这个变量的值,那么一定要将定义变量的语句初始化后才能查看变量的值
push-mark: 在光标的当前位置设置一个标记。 goto-char: 将光标移动到目的位置
判断可选参数是否为nil
(defun is-var-nil (var &optional opt1)
(if opt1
(message "var is not nil!")
(message "var is nil!")))
打开vi模式
M-x viper-mode
emacs在打开文件时,中文乱码
1. 尝试将文件用notepad保存成 UTF-8 格式,再用emacs打开
2. 如果不能将文件保存程UTF-8,可尝试
M-x revert-buffer-with-coding-system
选择 chinese-iso-8bit。
网上说可以更改 编码解析顺序,但配置了还是不行
代码折叠
M-x hs-minor-mode
再通过菜单方式选择即可
查看农历
M-x calendar
选中日期,按 p C (注意 C 为大写)
字母大小写切换
C-x C-u //转换成大写
C-x C-l //转换成小写
elisp帮助文档介绍
I try to say everything at least three times:
first, to introduce it;
second, to show it in context;
and third, to show it in a different context, or to review it.
任务栏中显示自定义时间格式
现在任务栏中的时间显示看起来很不舒服,尝试了一阵也不能解决。把中文的字体变成英文应该会好看些。现在显示的样子是:
星期五 一月 13 16:59
如下代码可设置成我喜欢的样式
;; display time
(setq display-time-day-and-date t) ;打开日期显示
(setq display-time-interval 1)
(display-time-mode t)
(display-time)
(setq display-time-format "%H:%M %Y/%m/%d %A") ;设定时间显示格式
(setq display-time-24hr-format t) ;打开24小时显示模式
(setq time-stamp-format "%3a %3b %2d %02H:%02M:%02S %:y (%z)") ;设置时间戳的显示格式
自动补全功能
1. auto-complete 不好用,用得越久就越卡
MEW
1. 接收的邮件为乱码,可以尝试在接收邮件列表中,需要查看的邮件行上按 “C-c C-l”选择编码试试
2. 查看邮件为乱码,在邮件上,按“.”即可
3. 保存邮件中的附件,先按“.”,再在附件上按“y”即可
4. 查看已发送邮件,按如下操作:
g
+backup
升级成版本中遇到的问题
let: Opening input file: no such file or directory, d:/emacs-23.3/home/.evernote-mode/contents/7a3e940d-18de-4c07-b65e-9de6dca46bbd
说明是新版本中的书签没有更新,好像 emacs 的查找过程是,如果查找的文件设置了书签,就会先查找书签,在从书签来查找到文件。如果书签不存在,就出现上面的情况了。
解决办法:
打开书签列表,Bookmark Menu \ Bookmarks \ Load a bookmark file ...
再选择原版本中 ~/.emacs.bmk 导入即可
在编写C函数声明时,关键字颜色状态不变化
尝试多空几行试试,再有格式一定要对齐!
org-mode 常用命令
C-c C-a : 添加任务计划
C-c , : 修改任务优先级,通常有 A-C三种级别
C-c C-e a // 到处TXT文件格式。其实按 C-c C-e 后,可以导出 html, xml 等文件
org模式下不能自动换行:在菜单栏 Options \ Line Wrapper in this Buffer \ Wrapper at window Edge
搜索文件
注意在Windows使用时,要保证 .emacs 中 PATH 没有包含 命令提示符,否则 MinGW 的 find 和 命令提示符 中的 find 冲突,只能包含 MinGW 的 find 的路径才行
find-name-dired 在文件夹中搜索文件(按名字,递归)
find-grep-dired 同上(搜索文件中的内容,递归)
find-dired 同上(自由度最高,所有选项自己设置,需要熟悉find)
dired-do-query-replace-regexp 在 dired 模式下替换当前行文件内容
安装 java 编译环境 jdee
cedet
1. 拷贝 cedet 文件夹到 emacs/site-lisp 文件夹中
2. 编辑 cedet/Makefile 文件
(1) 定义 PATHDIR 变量
PATHDIR="d:/emacs-23.4/site-lisp/cedet/common"
(2) 移除所有 "-print -exec $(RM) {} \;" 语句
(3) 将“cd $(CEDET_HOME)/$@ && $(DOMAKE)”修改为“cd $PATHDIR && $(DOMAKE)”。
(4) 在 cedet 目录 make
不重启 Emacs 让 .emacs 配置文件生效
有四个函数可以做到:eval-last-sexp,eval-region,eval-buffer 和load-file
M-x eval-last-sexp 使.emacs中光标前的那一条语句立刻生效。
M-x eval-region 使.emacs中选中的region中的语句立刻生效。
M-x eval-buffer 使当前的buffer中的设置语句立刻生效。
M-x load-file ~/.emacs 载入.emacs文件,从而使其中的设置生。
时间提醒功能
在 .emacs 添加如下语句,打开时间提醒功能
(setq appt-issue-message t)
添加及删除提醒:
M-x appt-active
M-x appt-add
M-x appt-delete
日志提醒
在 calendar 下,按 i d 插入日志,按 d 查看当天日志。emacs查找当前文件夹下文件中某个字段
需要和linux的find命令配合才行,在Windows下可以用MinGW来设置,将MinGW 的路径 d:\MinGW\msys\1.0\bin; 放到 %SystemRoot%\system32;之前就行。执行以下命令,并且输入关键字即可。
M-x find-grep
在centos下,eshell不能显示中文
在.emacs下,配置如下内容:
(setq ansi-color-for-comint-mode t)
然后执行 ansi-term 命令,按 Enter 执行默认程序 /bin/bash 即可。但是emacs的好多命令都不能用了。
在centos中不能切换输入法
折磨这个问题一晚上了,终于找到解决办法了。详细流程如下:
1. 下载 ibus-el-0.3.2.tar.gz,解压后将 ibus-el-agent ibus.el 拷贝到 ~/site-lisp 目录下。
2. 安装必要都软件,通过查看解压后的README文件,可以得到如下内容:
emacs (>= 22)
python (>= 2.5)
ibus (>= 1.2)
python-xlib
3. 前3个软件都好说,直接用yum安装就可以了。对于python-xlib,用yum找不到,所以直接下载源码来安装,其实很简单的。下载python-xlib-0.15rc1.tar.gz解压,参照README,安装过程如下:
python setup.py install
4. 最后一步配置.emacs。最好设置一个切换快捷键。我设置操作 ibus-toggle 只会打开输入法,不会切换,好奇怪。故设置两个不同的快捷键来切换中英文了。
(add-to-list 'load-path "/home/yangjie/site-lisp/")
(require 'ibus)
(add-hook 'after-init-hook 'ibus-mode-on)
(setq ibus-agent-file-name "/home/yangjie/site-lisp/ibus-el-agent")
;; Use C-SPC for Set Mark command
;; (ibus-define-common-key ?\C-\s nil)
;; Use C-/ for Undo command
;; (ibus-define-common-key ?\C-/ nil)
;; Change cursor color depending on IBus status
;; (setq ibus-cursor-color '("red" "blue" "limegreen"))
(global-set-key (kbd "<C-SPC>") 'ibus-mode-on)
(global-set-key (kbd "<C-M-SPC>") 'ibus-mode-off)
php-mode 使php文件语法高亮显示
访问地址 http://php-mode.svn.sourceforge.net/svnroot/php-mode/tags,现在我下的版本为 php-mode-1.5.0/php-mode.el
将下载的文件放到 emacs 根目录下的 site-lisp/ 目录下,并在 .emacs 文件中配置:
(require 'php-mode)
以十六进制方式查看文件
M-x hexl-mode