Emacs才是世界上最强大的IDE - 用Emaci阅读文件
相信有很多人平时要阅读大量文件, 而且阅读文件比编辑文件的时间要多的多, 在Emacs里编辑文件的时候, 阅读文件很不方便, 只能用C-v M-v上下滚屏. Emacs下有个view-mode专门是为阅读文件而准备的, 在view-mode里, u向上滚半屏, d向下滚半屏, SPC向下滚一屏, 阅读文件方便多了, 但是还不够, 为什么? 因为经常在阅读文件的时候, 你看到什么不对的地方需要修改, 而在view-mode下, 文件是只读的, 而且有时候, 你在编辑文件的时候, 也需要阅读文件, 那么这两种情况下, 你都要不停的切换view-mode, 非常的不方便, 而且在view-mode里面上下左右移动还得用C-n, C-p, C-f, C-b, 也是非常的不方便, 还有前进一个单词M-f, 后退一个单词M-b, 操作起来都还是很麻烦.
大家都知道vi, 它的快捷键是出名的短, 在vi的命令模式, 上下左右以字符前进是hjkl, 是vi最著名的地方了, 非常方便, 还有它的以单词前进和后退的快捷键w, b, e, 还有好多类似移动光标的命令, 都非常的方便. Emacs下有好多模拟vi的插件, vi-mode就是一个, 它是Emacs内置的, 它模拟了好多vi的特性, 简单的光标移动命令更是当然支持了. 用它来阅读文件的话, 也是不错的, 但是还是有两方面缺点, 一是在vi-mode下好多下, 好多Emacs本身的快捷键就用不了, 比如C-a, C-y等, 二是vi本身固有的缺点(个人观点), 那就是虽然那些快捷键比较短, 但是基本上要在命令模式下运行, 想想, 当你在编辑文件的时候, 想要上下左右移动光标, 然后继续编辑, 再来个上下半屏移动光标, 再来个编辑, 然后再搜索某个单词, 再来个编辑, 就得不停的在编辑模式和命令模式来回切换, 个人觉得非常的不方便, 所以用vi-mode来阅读文件也不是最理想的选择.
鉴于以上理由, 个人自己写了个minor mode, 结合Emacs的优点和部分vi的优点, 所以它的名字Emaci就是由EMACs和vI组成, Emacs占了四个字符, vi却只占了1个字符, 因为Emaci偏向于Emacs的功能更多.
安装好Emaci(只要(require ‘emaci))后, M-x emaci-mode (我把它绑定到了M-s上, 非常方便)进入emaci-mode. 由于大部分情况下打开一个文件浏览的情况比较多, 所以我写了一个函数emaci-exist-file, 这个函数的作用就是判断当前文件是否存在, 存在的话就自动打开emaci-mode, 我把这个函数加到了find-file-hook里面, 这样当你打开一个文件的时候就自动进入了emaci-mode, 打开新文件则不会进入emaci-mode.
进入emaci-mode后, 和vi类似, hjkl上下左右以字符单位移动光标, f, b前进和后退一个单词, I回到行首并且退出emaci-mode, A回到行尾并且退出emaci-mode. 和view-mode类似, u向上滚半屏, SPC向下滚半屏, w向上滚一屏, d向下滚一屏, <和>回到buffer头和buffer尾, 这个也和view-mode一样. g也是回到buffer头, J和K则是向下和向上移动7行, B执行eval-buffer, 1最大化当前window, 2把当前buffer垂直分成两半,3把当前buffer水平非常两半,q退出emaci-mode. 我的配置里,当安装了highlight-symbol后,n向前搜索当前光标处的下一个单词,p则向后搜索,非常方便。这样配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | (defun highlight-symbol-settings-for-emaci () "`highlight-symbol' settings for `emaci'." (eval-when-compile (require 'cl)) ;;;###autoload (defun emaci-n () "Command bind to key n." (interactive) (if (edebug-active) (edebug-next-mode) (if (equal major-mode 'gud-mode) (call-interactively 'gud-next) (call-interactively 'highlight-symbol-next)))) (define-key-list emaci-mode-map `(("p" highlight-symbol-prev)))) (eval-after-load "emaci" `(highlight-symbol-settings-for-emaci)) |
与vi和view-mode相比最大的差异的地方也是我觉得最方便的地方, 是在emaci-mode下也可以进行一些编辑工作, 比如你在浏览某个文件的时候, 发现某一行不需要, 直接用C-k删除即可, 然后再用C-y复制一下刚才拷贝的东西, 当然同样, 可以删除一个区域, 一个单词, 一个字符, 删除字符还可以用vi中的x命令. 这些编辑操作都不需要你退出emaci-mode, 编辑完之后, 用C-x C-s保存即可. 只有当你需要敲一堆文字的时候, 因为可能会涉及到jkhl等快捷键, 这时候才需要用q退出emaci-mode. 这时候你就想了, 那是不是每次编辑之前还要看一下当前是否开了emaci-mode, 那岂不是非常麻烦? 不用担心, 开启了emaci-mode后, mode-line上会显示一个非常显眼的”Emaci”样, 我特地用白底红字标示出来, 就像这样:
当然,这个颜色你也可以控制的,该颜色是由颜色变量emaci-mode-line-face来控制的。
而且, 我一般把M-s绑定到了emaci-mode-on, M-S绑定到emaci-mode-off上面, 这样, 你想编辑的时候按下M-S, 浏览的时候按下M-s, 即使不用看那个白底红字的”Emaci”字样, 也不会出错的. 这点view-mode就不行, 它和其他的minor mode一样, 都是默认的颜色, 我一般开启了好多minor mode, 这样, 你想编辑的时候, 还得盯着mode-line看半天当前是否打开了view-mode.
emaci还对常用的一些mode, 比如view-mode(所以你如果不喜欢在emaci-mode里面能修改文件, 只想只读的阅读文件的话, 可以考虑view-mode, 它的配置文件在这里), Man-mode, apropos, diff-mode, help-mode等定制了通用的hjkl等方便的快捷键, 这些是通过emaci-brief-key-defs变量来控制的, 这个变量是一个list, list的每一个元素是由两个元素构成的list, 第一个元素是快捷键, 快捷键的写法和kbd宏的参数一样, 第二个参数是该快捷键对应的命令, 这个变量默认值如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | (defcustom emaci-brief-key-defs `(("h" backward-char) ("l" forward-char) ("j" next-line) ("k" previous-line) ("J" roll-down) ("K" roll-up) ("b" backward-word) ("w" am-forward-word-or-to-word) ("o" other-window) ("G" end-of-buffer) ("a" move-beginning-of-line) ("e" move-end-of-line)) "Key pairs used bind in modes `emaci-maps-to-bind-brief-keys'. Each element of this variable is two-elements list, and first element is key like argument of `kbd', and second element is command." :type 'list :group 'emaci) |
而待绑定这些快捷键的keymap是由变量emaci-maps-to-bind-brief-keys控制的, 其默认值如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | (defcustom emaci-maps-to-bind-brief-keys `(view-mode-map Man-mode-map apropos-mode-map completion-list-mode-map log-view-mode-map compilation-mode-map diff-mode-map help-mode-map ,(if (>= emacs-major-version 21) 'grep-mode-map) color-theme-mode-map) "List used for `emaci-bind-modes-keys'. Element of this list either a list whose first element is load file, and second element is map, or a string which means load file, or a map." :group 'emaci) |
此变量是一个keymap的list, list中的元素是keymap或者是nil。
如果你修改了以上两个变量后, 执行一下M-x emaci-bind-brief-keys使你的修改生效.
Emaci的配置文件在这里,配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | ;; -*- Emacs-Lisp -*- ;; Time-stamp: <2010-04-19 10:15:52 Monday by ahei> (require 'util) (require 'emaci) (apply-define-key global-map `(("M-s" emaci-mode-on) ("M-S" emaci-mode-off))) (defun emaci-settings () "settings for `emaci'." (eal-define-keys 'emaci-mode-map `(("/" describe-symbol-at-point) ("'" switch-to-other-buffer) ("L" count-brf-lines) ("t" sb-toggle-keep-buffer) ("." find-symbol-at-point) ("," find-symbol-go-back) ("]" goto-paren))) (setq emaci-brief-key-defs (append emaci-brief-key-defs `(("]" goto-paren)))) (emaci-bind-brief-keys) ;;;###autoload (defun switch-major-mode-with-emaci () "Run `switch-major-mode' with `emaci-mode'." (interactive) (let ((emaci emaci-mode)) (call-interactively 'switch-major-mode) (emaci-mode (if emaci 1 -1)))) (eal-define-keys-commonly global-map `(("C-x q" switch-major-mode-with-emaci)))) (eval-after-load "emaci" `(emaci-settings)) (provide 'emaci-settings) |
听完我的介绍, 怎么样, 是不是你也一直期待这样的功能呢, 那赶快试试吧. 这里下载Emaci, Emaci还依赖ahei-misc, eval-after-load两个包,读者均可在DEA里面下载。

loading...

开始看到 emaci 还以为是打错了。。。
[回复]
ahei 回复:
四月 12th, 2010 at 1:31 上午
@wd, 哈哈,不好意思,名字取的不太好。
[回复]
太赞了,还没试光看看介绍就觉得这个mode很好。
也许你可以考虑把它单独提出来发布,要依赖另外两外el用起来就不够方便了。
[回复]
ahei 回复:
四月 12th, 2010 at 2:25 上午
@Meteor Liu, 呵呵,谢谢,有人喜欢就太好了。不依赖就要添加eval-after-load包里面的函数了,而且这个包我已经发布过了,还写了文章介绍的,只有一个ahei-misc的包没发布过,由于里面有一些公共的东西,只能单独做成一个包了。
[回复]
为什么不用viper-mode或还有个模拟vim的,我觉得更好用vimpluse,http://www.emacswiki.org/emacs/vimpulse.el
[回复]
ahei 回复:
四月 12th, 2010 at 11:52 下午
理由如文中所说:
但是还是有两方面缺点, 一是在vi-mode下好多下, 好多Emacs本身的快捷键就用不了, 比如C-a, C-y等, 二是vi本身固有的缺点(个人观点), 那就是虽然那些快捷键比较短, 但是基本上要在命令模式下运行, 想想, 当你在编辑文件的时候, 想要上下左右移动光标, 然后继续编辑, 再来个上下半屏移动光标, 再来个编辑, 然后再搜索某个单词, 再来个编辑, 就得不停的在编辑模式和命令模式来回切换, 个人觉得非常的不方便, 所以用vi-mode来阅读文件也不是最理想的选择.
[回复]
居然说vi在编辑模式和命令模式下切换慢。。。如果你有一定的vi经验,就不会这么说了。一巴掌拍到Esc就切换到命令模式,有那么多键(a,i,s,o,O,…)切换到编辑模式。我觉得这是vi最方便快捷的地方。
[回复]
ahei 回复:
四月 13th, 2010 at 1:58 上午
@abai, 如果我没有看错的话,文中并没有说切换慢,我的意思是不停的来回切换麻烦。加了Emaci后,想切换时就切换,不切换时就用Emacs内置的光标移动快捷键,而且文中已表明是个人观点。还有,我觉得vi有经验的人切换到命令模式的时候应该用C-c,而不是去按那个远在天边的”ESC”,C-c绝大部分情况下能代替ESC,当然我的vi经验不多,也许只有小部分情况下能代替ESC。
[回复]
Hi.博主。
有个简单的功能想请教一下。。我以前是用vim的。有一个小脚本我特别喜欢。
在任意的位置输入分号(;)
就在末尾输入分号并且换行(newline-and-indent);
能help我一下吗?
鄙人才用emacs不久。。您的文章太有帮助了
[回复]
ahei 回复:
四月 15th, 2010 at 2:33 下午
为什么要在末尾输入分号然后换行呢? 分号是Elisp中的注释符号, 你是不是要在Elisp中使用这个功能? 是的话, 输入分号后, 应该要输入注释啊, Emacs中按M-;后, 会在合适的位置加上分号,然后你就可以输入注释了
[回复]
SamPeng 回复:
四月 17th, 2010 at 10:39 上午
@ahei,
ahel.
阿。。原来还有M-;键。。谢谢。。。emacs强大阿。。
另外顺便问一下。。有没有有注释的插件呢?恩。。vim也有个小功能我经常用。因为我是写php的。
经常要给方法写注释。。现有的C-c C-c不是很好用。。
能在方法顶部添加一个注释块,并自动识别这个方法的各个参数类型。
[回复]
ahei 回复:
四月 17th, 2010 at 10:41 上午
@SamPeng, 是类似doxygen似的注释吗?doxygen在Emacs下的插件是doxymacs.
[回复]
SamPeng 回复:
四月 17th, 2010 at 11:21 上午
@ahei,
对头。。大牛还真快。。这么快就回复了。
刚找到了。。但很悲剧的是今天sf服务器升级。。明天再装了。
不能老向您请教。。请问lisp从哪入手比较好呢?偶尔会希望自己实现一下lisp。方便嘛。
我看了您写的auto-complate和ys的那篇文章。。。个人觉得。。如果大牛有空就写个auto-complate的完整教程吧。
收益不浅。。需要这方面的资料。。但是E文不是很过关。只能算勉强看得懂
[回复]
SamPeng 回复:
四月 17th, 2010 at 11:26 上午
@SamPeng,
是我没看到。。原来有了。谢谢您。
[回复]
ahei 回复:
四月 17th, 2010 at 11:27 上午
@SamPeng, 呵呵, 原来你没看见.
[回复]
ahei 回复:
四月 17th, 2010 at 11:26 上午
@SamPeng, 你可以直接去我的DEA里面下载doxymacs, 我DEA里面的doxymacs是最新的release, 作者已经很久没有更新了. lisp的学习的话看: 致Emacs初学者
auto complete就是一个简单的Elisp包, 没啥可写的啊, 你还要auto complete什么方面的配置啊
[回复]
SamPeng 回复:
四月 17th, 2010 at 3:03 下午
@ahei,
阿。。我刚在学习c的过程中发现。。原来M-;是注释当行。
并不是这样的。实际上经常在写一行语句的时候发现前面逻辑不对,就会跳回去修。然后就
不想再跳到尾巴上加个;
尤其是写if之类的循环以及一些带括号的。。。。少按一个组合键阿。
vim上就是一个;号就直接在末尾加了;号。。还行倒不要。。只是希望在本行末尾加一个;号
auto-complete。。。我怎么都没配起来。。后来想想算了。。我习惯没有自动提示的了。
只要提示本页面内的字符就行了。。。太多的自动提示影响思维的顺畅。。我要的是编辑器,而
不是自动敲代码的程序。哈哈。
[回复]
ahei 回复:
四月 17th, 2010 at 3:24 下午
@SamPeng, M-; (M-x comment-dwim) 就是跳到行尾, 自动添上注释符号的. 对了, vim默认的就是按;就直接在末尾加注释吗?我这边试了怎么不行啊
[回复]
SamPeng 回复:
四月 18th, 2010 at 2:08 下午
@ahei,
额。。不是默认的。是写的一个小脚本。。。我就是因为我的配置文件被我误删了
才开始弄emacs的。
不要添加注释符号。。而是加一个;。。虽然按着C-e。。是可以的。。但多按
一个组合键。不舒服。
[回复]
ahei 回复:
四月 18th, 2010 at 2:41 下午
@SamPeng, …不知道你为啥会有这个需求呢?你是编写什么文件呢?普通的文本文件?Elisp文件?不过我还是帮你实现了你的需求:
(defun semicolon ()
(interactive)
(call-interactively ‘move-end-of-line)
(insert “;”))
[回复]
SamPeng 回复:
四月 22nd, 2010 at 2:47 下午
@ahei,
太感谢了。。。谢谢谢谢。因为。。是一种编码习惯而已。。之所以喜欢emacs。vim
就是这个原因。。可以根据自己的需求来设置编码习惯。
最后一个问题。。cedet也好。。其他的代码分析程序也好。。哪个方法是调出当前
页面的函数列表呢?IDE用习惯了。。ecb倒是可以。。但太庞然大物了
ahei 回复:
四月 22nd, 2010 at 2:58 下午
speedbar可以, 不过我觉得semantic-complete-jump-local更好用
SamPeng 回复:
四月 22nd, 2010 at 3:06 下午
@ahei,
阿阿。。刚试了一下。
你给我的函数在Elsp文件内可以用。。但在c-mode不起作用。。我是这样定义的。
(defun semicolon ()
(interactive)
(make-local-variable ‘move-end-of-line)
(insert “;”))
(global-set-key “;” ’semicolon)
ahei 回复:
四月 22nd, 2010 at 3:10 下午
c-mode的”;”的定义是c-electric-semi&comma, 所以你要这样: (define-key c-mode-map (kbd “;”) ’semicolon)
fangzhzh 回复:
五月 28th, 2010 at 5:39 上午
@SamPeng, 最后一个问题。。cedet也好。。其他的代码分析程序也好。。哪个方法是调出当前
页面的函数列表呢?IDE用习惯了。。ecb倒是可以。。但太庞然大物了.
cedet中的eassist-list-methods,很好用,
[回复]
ahei 回复:
五月 28th, 2010 at 6:40 上午
@fangzhzh, 哈,cedet比ECB大多了
[回复]
我下载了emaci.el, ahei-misc.el,eval-after-load三个包,报错缺少util,又在dea下载到util.el,报错
semantic-symref-results-mode-map变量不存在(我安装了cedet),注释之,通过。
正在使用,thank u。
[回复]
fangzhzh 回复:
四月 16th, 2010 at 8:10 上午
@fangzhzh, 我讨厌现在分给我的这个头像,怎么是个流泪的样子,我想是sampeng那个坏笑的头像。
[回复]
ahei 回复:
四月 16th, 2010 at 8:16 上午
@fangzhzh, 。。。这个我也不知道怎么改,貌似改不了
[回复]
ahei 回复:
四月 16th, 2010 at 8:16 上午
@fangzhzh, 不需要util包的阿,你emacs -q启动,然后依次加载ahei-misc, eval-after-load, emaci, 保证没问题的,我已试过。另外你的cedet是1.0pre6以上版本吗?如果是的话,应该不会报那个错误阿。你仔细查一下。你是不是使用了我的其他的包?这三个包中都没有使用到semantic-symref-results-mode-map,你下载一下我的DEA里面最新的文件。
[回复]
fangzhzh 回复:
四月 16th, 2010 at 8:19 上午
@ahei, 我还用了emaci-setting.el这个包
[回复]
ahei 回复:
四月 16th, 2010 at 8:22 上午
@fangzhzh, 那就对了,不过emaci-settings主要是一些我个人的设置,你可能用不到,可以照那个设置你弄一份自己的。但是还是不会报那个semantic的错误阿。
[回复]
fangzhzh 回复:
四月 16th, 2010 at 9:00 上午
@ahei, 那就不知道为什么了,可能那个cedet的功能我没有开启吧。
挺好用的
感觉emacs效率越来越高了
[回复]
ahei 回复:
四月 16th, 2010 at 9:03 上午
@fangzhzh, 呵呵,好用就好。不需要开启cedet的。
[回复]
呵呵,我今天下载了你的dea包(svn checkout),立即体验了下,感觉非常不错,很棒,非常感谢!不过还是遇到了解个问题,如下:
1、 我在打开emacs(V23.1.1)时注意到*Mesage*中有好几个warning和error,主要是msf-abbrev.el中的问题,*message*内容我发到你邮箱(gmail)里了。
2、我在打开文件阅读代码(C)时,使用hjkl移动point时,buffer中的内容会跳动,并且往上或往下的移动buffer(卷屏的效果+屏幕闪跳),例如原来point在buffer中间,这时我用k移动到buffer的上面某行,然后静止不进行任何操作,过3s左右,该buffer会被向下移动若干行,有时移动的少有时移动的多。使用hkl 也会出现类似的问题。
上述现象并不是没次都有,但属于经常
3、我使用q退出emacsi模式后,使用C-n 或C-p也会有跟2同样的问题。
2和3的问题使得我在阅读文件时感到很困扰,在我自己的配置的.emacs中没有出现过,希望 ahei或其他大牛能提供一些帮助解决这个问题,谢谢先!
[回复]
wolfhuang 回复:
四月 19th, 2010 at 2:55 下午
@wolfhuang, 还有个问题:
在切换buffer时会闪烁好几下才恢复正常。不知道是什么原因。不过这个好像我之前就有,不过现在更明显了。
[回复]
ahei 回复:
四月 19th, 2010 at 4:06 下午
@wolfhuang, 这个是pulse的闪烁吧,你看下用pulse实现Emacs的淡入淡出效果
[回复]
ahei 回复:
四月 19th, 2010 at 4:03 下午
@wolfhuang, 谢谢使用DEA
1. 那些warning是msf的, 不用管的. error是mode-line-settings里面
2. 那个是开启了highlight-tail-mode的原因, 它和cedet在一起就冲突, 还不知道具体原因, 关掉highlight-tail-mode就没问题了
[回复]
wolfhuang 回复:
四月 20th, 2010 at 12:43 上午
@ahei, 谢谢你的帮助,我看一下pulse的实现,看看能不能改一改,如果有消息我就在后面跟了,可能有人有跟我一样的烦恼。
哈哈,你回复真快,还是个夜猫子。
[回复]
ahei 回复:
四月 20th, 2010 at 1:00 上午
@wolfhuang, 你如果不喜欢pulse的闪烁,把它关掉不就可以了吗?你改下pulse-settings就可以了。
[回复]
wolfhuang 回复:
四月 20th, 2010 at 2:10 上午
@ahei, 我刚才试了一下,emacs22 不会有23版本的那中闪烁(每行在跳动那种感觉,看着不舒服),我觉得这种跳动不是pulse的闪烁
只能等我回家后在23版本上关掉pulse再看看了。
[回复]
ahei 回复:
四月 20th, 2010 at 2:13 上午
@wolfhuang, 关键你那个闪烁是什么闪烁?是pulse的那个闪烁吗?pulse的视频在这里。
[回复]
wolfhuang 回复:
四月 20th, 2010 at 2:26 上午
@ahei, 哦,不是pulse的闪烁,是我表达的不好。
我说的那个闪烁说闪屏(没行文本都在抖动)可能更合适,就是切换buffer没有其他操作,切换到另一个buffer后的bufeer就会看到buffer中的每行在上下跳动的感觉。。不知道我这样描述是否能让你了解到我看到效果,如果还没有表达清楚,我晚上回去录制个视频传给你看一下。PS:还没录制过不知道今晚能不能录制出来。
[回复]
ahei 回复:
四月 20th, 2010 at 2:38 上午
@wolfhuang, 这个是不是就是highlight-tail-mode和cedet冲突的后果?你关了highlight-tail-mode没?
[回复]
wolfhuang 回复:
四月 20th, 2010 at 3:13 上午
@ahei, 我觉得这个不是highlight-tail-mode和cedet冲突的后果,因为在22版本不会有这种闪屏,cedet和highlight-tail-mode都启用了。公司用的是22版本,家里的是23版本,所以只能回去把highlight-tail-mode关了再试了。
你23版本且换buffer时有没有感觉没有22那么平滑了?
[回复]
ahei 回复:
四月 20th, 2010 at 3:15 上午
@wolfhuang, 那我就不清楚了,我的22和23切换buffer没有啥差别。你可以用二分调试法调试一下。
[回复]
wolfhuang 回复:
四月 20th, 2010 at 1:38 下午
@ahei, 我知道为什么会出现这个问题了。当point在一个宏上,该宏定义占据不只一行时,会出现我说的那种现象,
因为point在该宏上时会在minibuffer中显示这个宏定义,这时minibuffer会长高,这导致了buffer的高度也要发生变化,这也许就是引起跳屏的原因了。但我还没找到是是哪个包实现这个功能的。
ahei 回复:
四月 20th, 2010 at 1:44 下午
那个是semantic-idle-summary-mode的效果,你把它关掉试试
wolfhuang 回复:
四月 20th, 2010 at 3:12 下午
@ahei, 哈哈,你是对的,我错了。我折腾了一晚上,正如你说的是highlight-tail-mode的问题,它引起了buffer跳动的,并不是semantic-idle-summary-mode引起的问题。
屏幕在切换或跳到其他行时的闪屏还没有折腾出来是谁引起的问题,我把这些配置全注释了就不会了。明天继续儿分调试。
谢谢!
wolfhuang 回复:
四月 20th, 2010 at 12:45 上午
@ahei, 为什么时间显示不对,难道你不再北京时间里?
[回复]
ahei 回复:
四月 20th, 2010 at 1:00 上午
@wolfhuang, 在北京,我也不知道时间为啥不对。服务器是在美国。
[回复]
还有个问题,wcy-desktop-settings和maxframe-setting有冲突,frmae在emacs启动时不能最大化,如果把wcy-desktop-settings注释掉就能启动时最大话了,但是这样就没有了desktop了,我试图把maxframe-setting 在desktop后设置,也还是不能启动最大话。不知道是否有解决办法?
[回复]
ahei 回复:
四月 21st, 2010 at 12:04 上午
@wolfhuang, 这个bug我改好了,你更新一下wcy-desktop-settings.el
[回复]
wolfhuang 回复:
四月 21st, 2010 at 6:58 上午
@ahei, 我在你的svn上看到的是wcy-desktop.el,
我使用 update脚本更新代码时并没有显式更新了wcy-desktop.el,我就自己从你google svn上下载了这个包替换,但还是启动时不能最大化emacs。请问我还需要什么设置吗?
[回复]
ahei 回复:
四月 21st, 2010 at 7:01 上午
@wolfhuang, 不好意思,忘记同步了,现在好了,是更新wcy-desktop-settings.el
[回复]
wolfhuang 回复:
四月 21st, 2010 at 7:08 上午
@ahei, 哈哈,你回复好快阿,我刚已经找到这个包了自己下载了,试了下,已经没问题了。
请问有没有更新说明或者已知bug说明等东东?
谢谢!
[回复]
ahei 回复:
四月 21st, 2010 at 7:10 上午
@wolfhuang, 他原始的包是有个小bug的,我改了下,然后又引起了一个小bug,现在又改好了,所以你要下载我的wcy-desktop-settings.el
[回复]
@wolfhuang
不过使用desktop-settings也不错,我试了下也没觉得比有多慢,呵呵反正现在启动时已经很满了,也不在乎再慢一点了。而且这个desktop会自动打开上次的buffer,我到觉得这样更方便了(也许就是慢在打开buffer这里了)
[回复]
ahei 回复:
四月 20th, 2010 at 11:17 下午
@wolfhuang, 呵呵,我一般都打开上百个buffer的,你试试有多慢。wcy-desktop还是快非常多的,主要是它只记住打开的文件,其他的啥都不记住,desktop记住的东西太多了。我现在的DEA启动速度比以前快多了,一个就是加了eval-after-load,另外一个就是用了wcy-desktop
[回复]
woshiemacsxinshou 回复:
十月 26th, 2011 at 9:21 下午
@ahei,
要让wcy-desktop 记住打开文件然后还记住光标的位置,如何设置呢?
很喜欢记住光标这个功能。
谢谢呀,新手
[回复]
ahei 回复:
十二月 10th, 2011 at 1:32 下午
;; 可以保存你上次光标所在的位置
(require ’saveplace)
(setq-default save-place t)
[回复]
@wolfhuang
哦,好,谢谢!
[回复]