站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Emacs/智能的启动Emacs
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
{{Emacs top}} ==概述== [[Emacs]]的启动速度是一直为非E众诟病的。虽然说现在机器是越来越快了,用常用的配置,直接启动emacs也就等个2-3秒,但是和[[gvim]]比起来还是太慢了。不过Emacs提供了一个CS模式,在Emacs23以前,可以在一个已打开的Emacs上启动server,之后就可以用emacsclient通过连接到server的方式打开文件。在这种模式下,除了第一次打开Server Emacs耗时比较长外,之后每次起client的速度那都是很快的。 这样有一个问题,如果关闭开启Server的那个Emacs,emacsclient就无法连接了,解决办法是给emacsclient加上'''–alternative-editor=<path-to-emacs>'''这样的参数,在失败时启动一个新的Emacs,当然这样就感受不到直连server的高速爽快感觉了 那Emacs 23之后呢?由于POSIX系统的特殊性,这回Emacs给其加上了一个daemon模式。这和传统的CS模型的区别是,启动Emacs Server的是那个daemon进程,这样即便将所有的Emacs窗口关闭,daemon仍然在运行。这样就解决了上面说的必须保持着那个server窗口的问题。 ==详细讲解== Daemon模式的启动很是方便,直接运行'''emacs --daemon'''就行了。当然使用daemon可能会碰到字体设置的问题,这个不在本文范畴。我们可以把其写成一个init[[脚本]]放到系统启动项里面去。不过我并不喜欢这样,因为这不是按需启动的,如果在没注意的情况下把daemon给杀了,之后用emacsclient启动就全部出错了。不过由于有[[Windows]]下使用的经历,知道emacsclient可以为启动指定一个fallback,所以很自然就把这个参数指定为一个自定义脚本,这个自定义脚本负责启动daemon和client,脚本如下: #! /bin/bash emacs --daemon && emacsclient $* <pre>-a, --alternate-editor=EDITOR if the Emacs server is not running, run the specified editor instead. This can also be specified via the `ALTERNATE_EDITOR' environment variable. If the value of EDITOR is the empty string, then Emacs is started in daemon mode and emacsclient will try to connect to it.</pre> 发现了吗,其实只要给这个参数指定一个空字符,就能让emacsclient在连接不到server时自动启动daemon了。当然,这个参数支持从环境变量ALTERNATE_EDITOR读取,当然也就选择这个方式了。 这样用下来一阵子,又有问题了。因为启动的daemon是没有[[frame]]的,所以假如当前没有可见的frame,在启动emacsclient时又没有加”-c”参数,那么emacsclient只会在daemon上创建一个没有frame的client,而我们将得不到任何提示。如果这时运行”emacsclient -c”创建一个新的frame,你会发现这个文件其实已经打开了,只是我们看不到而已。这是相当令人困扰的。 那就给emacsclient加上参数”-c”。但是因为每次打开都会启动一个新的frame,这样用下来也是不爽快。 需要能够一种智能启动emacs的方式,如果当前没有可见的frame,则新建一个,否则,复用当前frame。最终是通过写了一个脚本的方式来实现的: #! /bin/bash (wmctrl -a @jay && emacsclient -n $*) || emacsclient -n -c $* 其中用到了wmctrl这个软件包,ArchLinux的用户可以直接用”pacman -S wmctrl”来安装。其中的”@jay”是我的emacs标题上的内容,用来帮助wmctrl找到具有这样属性的窗口。 把Nautilus的文件默认打开方式设成这个脚本,这下emacs终于能够按照我的想法启动了,另外,还在Nautilus里面加了一条”emacsclient -c”的打开方式,以便在需要的时候能够方便的新建窗口:) ==参考来源== [http://emacser.com/smart-start-emacs.htm 参考来源] {{Emacs}} [[category:Emacs|Z]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:Emacs
(
编辑
)
模板:Emacs top
(
编辑
)