非程序员的GNU Emacs使用心得...... Shell Mode 第3集 命令行编辑
bash 带来了命令行编辑,无数的人有福了
是啊。真的是这样。命令行编辑实在是我们日常工作中须臾不可离开的好朋友。你们现在还能够想象每天工作在一个没有命令行编辑的古老的 Bourne Shell会是一个什么感觉吗?往事不堪回首啊。。。而且不是很遥远啊,就在两三年前,一些比较早期的操作系统,我不是说 Linux,在缺省安装的情况下,是不包括可爱的 Bourne Again Shell的。
这还不是问题的全部,即使是现在,对于一些自己实现命令解析的应用程序,例如 WebSphere MQ 的命令解释程序 MQSC,在一些没有 GNU readline 的系统环境里面,比如说缺省安装的 HP-UX 上面,都将是一件非常痛苦的体验。。。 当然,你也可能没有机会接触到 WebSphere MQ 这样的程序,不过没什么,你可以自己编译一套不包含 GNU readline 的 Python 安装,我想体验上的差别不会很大。
现在你们开始有一点点感觉到我们工作的辛苦了吧。这和在自己独有的的,配置完备的,武装到牙齿的机器上工作是完全不同的一种体验,
然而,困难还没有就此结束。我们还有一些远在万里之外的机器。这样的机器通过非常缓慢的网络连接进来,操作一台慢速连接的机器更是一次痛苦的体验。想想你的每一次按键都要一两秒钟才会在屏幕上显示出来,想想你的每一次返回修改都不能及时确定光标究竟移动了多少,想一想这样的环境下你要工作一整天,当然还有明天,还有明天的明天。。。有什么感觉?要不要顺便再想一想与此同时还要工作在一个没有 GNU readline 的命令解释程序中。。。。。。
我在这里不是在讲鬼故事。这就是我们每天真实的工作环境。这也就是为什么我会选择使用 GNU Emacs的 shell-mode。其中核心的一个原则就是——不能把命令行的控制权交给 Shell。我们要自己掌握这个控制权,或者说让 Emacs掌握这个控制权。
当我们使用 shell-mode的时候和我们使用 terminal的时候最明显的区别就在于terminal那端的 Shell再也看不见我们的每一次按键了。其实以前的这种 terminal 的通讯方式不能不说是 Unix的一个小小的历史遗留的问题。现在终端是有足够强大的处理能力的。所以,我们把这个权利收回了,从此之后,整个世界,安静了。
当我们在 Emacs的 shell-mode里面输入命令,我们的每一次按键,都只是输入到 Emacs的 buffer里面,这个时候对于远端的 Shell来讲,我们的按键是不存在的。一切都在 Emacs里完成,一切都在 Eamcs里处理。当一条完整的命令最终编辑完成以后,再将这条命令一次性的发送给远端的 Shell。
就用这样一种模式工作,我们在前面提到的那些个困难,就全部都迎刃而解了。不论是面对没有 GNU readline 的第三方命令解释程序,还是面对遥远的美利坚花旗国的那些慢速连接的机器,或者是其中的任意组合,由于我的所有的工作,每一行命令,都在本地的 GNU Emacs里面编辑完成,然后才发送给远端的 Shell,所以以上的种种问题,对我来说都不存在了。
对于没有 GNU readline 的命令解释程序,由于我的所有的命令都是输入给 Emacs 的 shell buffer的,而且 Emacs具有非常优秀的文字编辑功能,我可以随心所欲的编辑我的命令,对于下面的那个命令解释程序,由于我只是把最终完成的结果发送给他,他有没有 readline,他能不能作命令行编辑,对我来说无所谓了。
对于美利坚花旗国的慢速机器,同样由于我的所有的命令都是输入给 Emacs 的 shell buffer,而不是每敲一次按键都要和美利坚花旗国进行一次交互,GNU Emacs 是安装在我的本地机器上的,所以连接的速度快慢对我来说也影响不大了。
posted on 2010-08-09 15:59 David Young 杨博华 阅读(501) 评论(0) 编辑 收藏 举报