首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从shell脚本启动编辑器?

如何从shell脚本启动编辑器?
EN

Stack Overflow用户
提问于 2009-11-07 04:42:08
回答 6查看 12K关注 0票数 20

我想让我的tcsh脚本启动一个编辑器(例如vi、emacs):

代码语言:javascript
复制
#!/bin/tcsh
vi my_file

这将使用my_file启动vi,但首先会显示警告"Vim: Warning: Output is not to to terminal“,并且我的按键不会出现在屏幕上。在我杀死vi之后,我的终端窗口被弄乱了(没有换行符),需要“重置”。我尝试了"emacs -nw“、"xemacs -nw”和“pico”,得到了类似的结果。"xemacs“可以工作,但会启动一个单独的窗口。我想重用相同的终端窗口。

有没有一种方法可以从脚本启动编辑器,以便它重用相同的终端窗口?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-07 04:48:19

我回答了我自己的问题!您必须重定向终端输入和输出:

代码语言:javascript
复制
#!/bin/tcsh
vi my_file < `tty` > `tty`
票数 21
EN

Stack Overflow用户

发布于 2012-10-20 00:41:34

我想做一些类似的事情。我想要一个别名,它可以找到我正在处理的最后一个文件,并在vi(1)中打开它进行编辑。无论如何,我不知道如何将它作为一个可读的别名(在tcsh中),所以我只创建了一个丑陋的shell脚本(csh,因为我老了):

代码语言:javascript
复制
#!/bin/csh

set DIR = "~/www/TooMuchRock/shows/"

set file = $DIR`ls -t $DIR | head -1`
set tty = `tty`

vi $file <$tty >$tty

(1)本地,vi vi:别名为/usr/ kraftwerk:bin> /bin/vim -u ~/.exrc

票数 6
EN

Stack Overflow用户

发布于 2009-11-07 06:32:35

绝对一点儿没错。:-)

编写脚本并让其调用EDITOR环境变量,该变量将设置为"emacsclient“。然后启动Emacs,执行M-x server-start,切换到shell buffer (M-x shell)并执行脚本。Emacsclient将弹出要编辑的内容,C-x #将充当“完成”命令,并根据您的选择返回到已完成或已中止编辑的脚本。

好好享受吧。

编辑:我的意思是说,现在Emacs是我的终端程序。我有几十个shell缓冲区,从来不用担心会丢失输出,并且可以使用Emacs的所有功能来操作和分析终端输出。并让Emacs脚本生成shell的输入。实际上很棒。例如,在编辑源代码或处理邮件或执行几乎任何Emacs操作时,在shell缓冲区中查看Tomcat输出是非常方便的。当出现Tomcat堆栈跟踪时,我可以快速响应它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1690274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档