打开自定义终端会话的脚本

打开自定义终端会话的脚本

我不确定标题是否表达出了我想要做的事情,但是它是这样:

我正在做一个涉及很多类的python项目。我使用Terminal Vim进行编辑。

你可以想象,必须手动打开 10 个不同的终端选项卡、为它们命名并打开其中的正确文件,这是一件非常麻烦的事情。

我想创建一个脚本,使用 vim 在同一窗口的不同选项卡中打开目录中的所有文件。我希望脚本将选项卡的标题设置为正在打开的文件的名称。

我使用 gnome 终端。

从逻辑上讲我知道如何做但我似乎找不到我需要的命令。

看起来我能够使用 gnome-terminal 命令做我想要做的事情,但我似乎无法让它正常工作。

编辑:vim -p * 很有用,但我想找到一个完全符合我上述要求的解决方案。将每个文件放在各自的 TERMINAL 选项卡中,可以让我单独打开/关闭/暂时挂起它们,并且通常会更加方便。

答案1

如果我正确理解了你的问题,你想要的是 -p 选项。vim -p * 将在同一窗口中在自己的选项卡中打开当前目录中的所有文件。

答案2

经过一番探索后,我能够使用一个简单的 perl 脚本来做我想做的事情:

我之前因为无法在同一窗口中打开选项卡而陷入困境。现在我意识到该命令是为了创建终端窗口的新实例而构建的。

所以:

gnome-terminal --tab-with-profile=def 

不会像我想要的那样打开新标签,但会打开一个新窗口(def 是我的个人资料名称)

但:

gnome-terminal --tab-with-profile=def --tab-with-profile=def

将在一个窗口中打开 2 个选项卡(但不是我当前的窗口,这很好)

我可以给它们一个标题并执行命令来:

gnome-terminal  --tab-with-profile=def --title="foo" -e "vim foobar.txt"

打开一个新窗口(单个选项卡),在 vim 中打开 foobar.txt 并为我添加选项卡标题

考虑到这一点,我能够编写以下程序:

工作时间.txt:

#!/usr/bin/perl
use v5.14;


my $wd = '/home/luke/Pokemon-Battle-Simulator';
chdir($wd);

opendir(DIR,$wd);
my @files = readdir(DIR);

my $cmd = 'gnome-terminal';
my $tab = ' --tab-with-profile=def';
for my $file(@files)
{
    if (($file  ne ".") and ($file ne ".."))
    {
        my $title = '--title=' . $file;
        my $e = "-e 'vim " . $file . "'";
        $cmd .= join(' ', $tab, $title, $e); 
    }
}
print $cmd;

`$cmd`

答案3

您可能需要查看“screen”unix 工具。它是一个终端“多路复用器”,可通过单个连接(ssh、telnet 或本地)打开多个终端。它可配置为使用新连接在不同的屏幕中自动打开多个 shell 或命令(例如 vim、top 等)。它还可以在断开连接时保留会话,因此如果您正在编辑文档并且您的 ISP 断线几分钟,您可以立即返回编辑。

ssh + 屏幕 + emacs = 胜利!

相关内容