博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Emacs 24.3支持cygwin上使用Win32 GUI
阅读量:6184 次
发布时间:2019-06-21

本文共 1808 字,大约阅读时间需要 6 分钟。

刚看见GNU Emacs 24.3,我从git仓库里打开看了一下,发现了这么一条:

  ** Cygwin builds can use the native MS Windows user interface.  Pass --with-w32 to configure. The default remains the X11 interface.

哈,这正是我原来一直梦想着的特性:底层采用Cygwin的POSIX兼容层,界面采用Win32原生GUI——这在以前看到rxvt的win32原生GUI版本时就有了这个愿望。
这样有什么好处呢?

1 底层采用Cygwin的POSIX兼容层

  • Emacs与shell和其它程序的交互就跟UNIX下面一样了,这样很多win32特有的兼容性问题就不存在了,比如调用一个shell命令时的引号问 题(比如悲摧的find-grep,比如M-x shell-toggle-cd里面的"cd /path/to/somewhere""cd /d x:\path\to\somewhere"问题);反过来,你在git/hg里面可以很方便地调用ediff和emerge来比较文件、解决合并冲突了
  • cygwin有虚拟终端支持,这样你可以用M-x term来运行各类终端程序,比如bpython, midnight commander。反过来,如果用cygwin版本的Emacs,你也可以在screen里面跑emacs

2. GUI采用win32 gui

  • 相对terminal版本,GUI的优势是有丰富的颜色、字体以及fringe修饰
  • 相对原来的X11 GUI版本,优势是不必启动一个X11 server了
  • 这个cygwin-w32版本有win32 native版本的几乎所有功能
    • 可以从Windows程序(比如资源管理器)拖放文件到Emacs
    • 可以使用Windows所管理的字体,也就是你不用自己再安装配置X11字体
    • 可以使用<lwindow>, <rwindow>, <apps>等键,也就是说w32-lwindow-modifier等变量仍然可以设置
    • 缺省打开浏览器的方法与win32 native版本和cygwin原来的设置都是一样的: browse-url-default-windows-browser
    • 虽然缺省shell改成了bash (由Cygwin提供的环境变量SHELL决定),但你应该可以用(let ((shell-file-name "cmd")) (shell))的方式来运行cmd(不过我不推荐你用(setq shell-file-name "cmd")修改掉缺省的shell——调用很多外部程序时需要这个设置,而cmd实在是配合不好)

3. 为什么不用native win32 gui版本?

这主要是Cygwin的优势了:

从安装的方便性上来说,很多外部程序(比如find, grep, diff, git),你不用繁琐地到处去寻找win32 native port来安装了,你可以很方便地安装和使用cygwin的版本(在此推荐一下  t, 你只要简单地cyg-apt install w3m就可以安装上w3m了。另外[url=]),何况有些程序目前没有win32 native port,比如dict, sdcv

目前发现的一些小问题:

* 窗口没有图标(我发现nt/emacs.rc并没有被编译、包含进可执行文件,但手工加了一下之后,窗口还是没有图标——待有空仔细看看代码看问题在哪里)

 

附两张截图:

 


快写完的时候,邮箱收到了cygwin-announce邮件列表的通知,说是,所以你只要打开Cygwin setup.exe,选择安装emacs-w32就可以了。

如果你用cyg-apt的话,那么就是这么几步:

cyg-apt setup    #第一次运行cyg-apt的话,需要用这个建立配置文件~/.cyg-aptcyg-apt update   # update setup.inicyg-apt install emacs-w32

P.S. 根据,新的Emacs不需要跟X11库链接也可以在terminal下支持鼠标了(这个补丁也可以在老版本的Emacs源代码上使用)——但你还是需要在运行期执行M-x xterm-mouse-mode打开鼠标支持

转载地址:http://ixsda.baihongyu.com/

你可能感兴趣的文章
Linux实用工具之GPG
查看>>
RabbitMQ学习总结(一)——基础概念详细介绍
查看>>
导入EXCEL时的日期转换
查看>>
Dubbo学习总结(3)——Dubbo-Admin管理平台和Zookeeper注册中心的搭建
查看>>
.Net反序列化漏洞之XmlSerializer
查看>>
关于域名解析相关的几个记录:DNS A记录 NS记录 MX记录 CNAME记录
查看>>
INNODB监控开关
查看>>
《Zabbix企业级分布式监控系统》预售
查看>>
压力测试和评测工具
查看>>
docker-ce安装与配置
查看>>
设计模式-创建-ProtoType(原型)模式
查看>>
xcode删除多余的配置文件
查看>>
易宝典——体验O365中的Teams 实验手册之六 体验团队的使用
查看>>
BackTrack5 升级Metasploit至Git更新的方法
查看>>
Linux定期清Tomcat web server日志
查看>>
iOS定时器循环引用问题解决
查看>>
Oracle数据库升级与补丁
查看>>
jQuery $.each用法
查看>>
Java集合的Stack、Queue、Map的遍历
查看>>
AD添加用户时,提示“目录服务已经用完相对标识符池”
查看>>