我不确定标题是否表达出了我想要做的事情,但是它是这样:
我正在做一个涉及很多类的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 = 胜利!