这里说的终端,其实主要是指终端模拟器,也即putty/mintty, xshell, gnome-terminal, xfce4-terminal等。虽然说理论上来说,大多数内容也适用于控制台,但我并没有在上面验证过。
多frame
如果你像我一样用Frame Bufs这个扩展将不同“工程”的buffer组织在不同的frame上,那么肯定也想问终端下是否支持frame,答案是肯定的。仍然使用C-x 5 2来创建新的frame, 用C-x 5 o切换frame。与GUI下的差别是你不能调整frame的大小了,因为一致都是全屏——如果你想要用半个终端来跑别的东西,建议用tmux或者 Emacs里面的ansi-term-mode
参考: Emacs Journey: CLI Emacs and multiple-frames
除了终端模拟器自己的拷贝、粘贴和右键菜单,终端模拟器里面跑的应用程序其实也是可以使用鼠标的,这些终端模拟器大都支持一种叫做Xterm mouse tracking的功能: 终端模拟器收到鼠标时,先看看是不是应该用来应对自己的功能(比如文字拷贝、粘贴和右键菜单),如果不是,则将按键信息通过Xterm control sequences将按键信息发送给应用程序。
GNU Emacs可以通过M-x xterm-mouse-mode打开终端下的鼠标功能。
不过有几点值得注意:
所用的Emacs必须编译进了鼠标支持才能使用xterm-mouse-mode。一般来说,如果你安装的Emacs是带X11版本的,那么就没有问题;如果你安装的是emacs-nox,那么就不支持鼠标了。
(其实这个说法并不严谨,但根据Emacs的缺省编译设置,的确是在有window-system的时候才打开HAVE_MOUSE这个定义,configure脚本没有单独对鼠标支持提供开关。而最近的一个HAVE_MOUSE补丁则完全放开了鼠标支持,你可以在老版本Emacs代码上打上这个补丁重新编译)
如果你想为鼠标事件增加Ctrl,Alt和Shift修饰键(modifier)的支持,比如绑定<S-mouse-1>或者<M-mouse-3>到某个事件,虽然理论上是支持的,但实际上都比较悲摧,自己用C-h k试试就知道了(唯一比较幸运一点的是Ctrl)
鼠标滚轮可以用。不过跟GUI下不同的是,几乎没有带修饰键的版本可用(也就是说不能绑定<C-mouse-4>, <M-mouse-4>这些事件 (PS 在Linux系统上,鼠标滚轮事件名叫<mouse-4>和<mouse-5>,跟Windows下的<wheel-up>和<wheel-down>并不一样(不清楚Mac OS X等系统))
终端模拟器都有一些自己鼠标功能(比如选择文本拷贝到本地剪贴板,显示右键菜单),可能会保留Ctrl/Alt/Shift中的某一个用来做这方面的用途
这个设置在Putty里面是Configuration->Window->Selection->Shift overrides application's use of mouse; 在Mintty里则是 Configuration->Mouse->Modifier key for overriding default ; 而Gnome Terminal里则不提供配置,右键(<mouse-3>)始终被自己接管,按住Shift始终是本地的选择文字功能,里面跑的应用程序永远无法得到这两个事件
颜色
如果你用终端模拟器(gnome-terminal,guake, putty或者mintty)来运行emacs, 其实它们也是支持256色的。这样你的语法高亮配色就有了更多选择。
putty缺省是支持256色的,只要你没有在选项Window->Colours里面关闭Allow terminal to use xterm 256-color mode这一项。那么用上面的TERM环境变量就够了。
mintty 里面,你可以直接在Options->Terminal->Type里面选择xterm-256color,这样进去之后shell就会继承 这个设置,不用手工设置TERM环境变量了——当然你在交互式方式或者~/bashrc里面设置也行,不过这本来就应该是终端模拟器端的设置。
另 外,如果你又在终端模拟器(gnome-terminal, putty)里面跑了screen/tmux的话,那么得启动screen/tmux之前把TERM设置成256色模式(xterm-256color或者rxvt-256color之类),然后在screen/tmux的window中把TERM设置为screen-256color,详细内容请参看ArchWiki: Tmux: Set the correct TERM
一些文章上说,只要在tmux里面启动一个window后,在里面执行export TERM=screen-256color(或者在~/tmuxconf里面添加set -g default-terminal "screen-256color" 来自动设置)。但根据我的试验,启动tmux之前不设置TERM是实际上得不到256种不同颜色的
terminfo问题
如果用的Linux比较老,terminfo数据库里没有xterm-256color或者screen-256color这个类型的定义(用ls /lib/terminfo/s/可以列举所有以s开头的terminal type),那么你就没法用这个功能了(FIXME: 怎么加上这个类型定义?)
实测是否真支持256色(而不是名义上有256色却有很多重复的颜色)的一个方法是用这篇The 256 color of xterm里面提供的perl脚本256colors2pl,它会显示类似如下的图:
待续
快捷键(key bindings)
Emacs菜单问题 (lacarte)
Emacs overlay和fringe (auto-complete, hideshow-fringe, qtmstr-outline etc)
开发任何程序emacs都非常适合。我的 C, bash, tcl 程序,及各类配置文件,都是在 emacs上写的。还在emacs上用gnus收发邮件等。我喜欢在干所有事情的时候,都用一样的快键,一样的编辑风格,一样的缩进……
至于补全,我从来没搞定过 cedet 的语义补全,只好用 auto-complete 的普通补全,真的要查看某个结构体内有什么成员,直接开一个window (C-x 2)打开对应的h就行了,速度比在d出的补全框中一个一个变量找更快,还有利于熟悉头文件之间的关系和阅读注释。 在 emacs 中,我更常用的是 cscope 和 gtags 来查看调用关系,这才是开发大型代码必备的功能。
所以楼主不要为了区区一个补全而放弃emacs。
一个编译器;
一个调试器;
其它一些辅助功能,比如用鼠标拖控件。
什么是最好的IDE?那肯定是
最好的IDE = 最好的编辑器 + 最好的编译器 + 最好的调试器有哪个IDE做到这一点了吗?只有Emacs。Emacs可以很方便地调用世界上最牛的编译器(gcc),和调试器(gdb)。也许你会说「Emacs不能拖控件啊」,没错,但在我看,拖控件并不总是一个受人欢迎的功能,至少在系统编程的时候,它毫无用处。
而
且,从学习的角度来说,「用鼠标编程」绝对是一个非常恶劣的习惯,因为这根本就是在逃避学习。「鼠标化的IDE」隐藏了很多学生应该了解的技术细节。鄙学
院的绝大多数学生居然不知道C程序是要编译之后才能运行的,他们以为写好了程序,只要「按那个“感叹号”按钮」就可以了。这就是「鼠标教学」的成果(你肯
定知道C编程这门课不归我管)。Emacs可以帮助你克服「鼠标依赖」,强迫你熟练地使用键盘。
更重要的是,Emacs不只是个IDE,
它是个ICE(Integrated Computing
Environment,这名字是我刚编出来的)。Emacs的设计目标就是,你装了个Unix或者Linux系统,不需要装任何其它软件,只要装一个
Emacs就够了,它能帮助你完成所有的任务。也就是说,除了编程,你还可以用它写论文、做幻灯片、浏览网页、收发邮件、聊天、听歌、看照片、玩游戏……
目前,好像除了直接在Emacs里看**还不行,其它的都实现了。
Emacs如此「大一统」的设计目标显然有违Unix的设计原则,do
one thing, and do it well 但好在Emacs是模块化的,它的每一个功能模块都绝对遵循do one thing,
and do it well原则。你不喜欢那些功能,可以不装它。
另外,还是从学习的角度来说,Emacs的学习曲线貌似比其他IDE要长不少,但是你
不必学习VC去写C/C++,
不必学习eclipse去写Java,
不必学习MS-Word去写报告、幻灯片,
不必学习……
一句话,“Everything Emacs”,可以省下大量不必要的学习时间。人生苦短,何必让你的生活被 VC/eclipse/MS-Word 搞得头昏脑胀呢? 简单而强大,本就是计科专业学生和非专业学生应有的不同 。
Emacs
绝对强大,但是否「方便」就不好说了。因为「方便」是一个很主观的概念。反正,作为一个18年的老用户,我肯定觉得方便。其他IDE太无聊了,那么花哨而
庞大的东西,却只适用于应用层编程。既不能用来写论文,又不能做幻灯片,更不能用来听歌、玩游戏。生活也太没有乐趣了。
最后一点,Emacs还是一个巨大的开放社区,在这里你能结识到更酷一些的程序员。
Emacs入门还是很简单的,它自带了一个基础教程。打开Emacs,按 Ctrl-h t , 教程就出现在你面前了。照着它边看边练,英文不太困难的话,一个小时应该可以走一遍了。之后,
Ctrl-h i m emacs就可以调出详细的Emacs使用手册;
Ctrl-h i m emacs lisp intro 可以调出Emacs Lisp入门教程;
Ctrl-h i m elisp 可以调出完整的elisp编程手册。
当然,Google永远是你最好的帮手。
以上就是关于怎么使用terminal emacs全部的内容,包括:怎么使用terminal emacs、请问,现在,emacs适合哪类程序的开发、Emacs有什么优点,用Emacs写程序真的比IDE更方便吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)