
我不確定標題是否表達了我想要做的事情,但它是:
我正在開發一個涉及很多類別的Python專案。我使用 Terminal Vim 進行編輯。
正如您可以想像的那樣,必須手動打開 10 個不同的終端選項卡、為它們添加標題並在其中打開正確的文件,這是一件很痛苦的事情。
我想建立一個腳本,使用 vim 在同一視窗的不同標籤中開啟目錄中的所有檔案。我希望腳本將選項卡的標題作為它打開的文件的名稱。
我使用 gnome 終端。
從邏輯上講,我知道如何做到這一點,但我似乎找不到我需要的命令。
看起來我可以使用 gnome-terminal 命令做我不想做的事情,但我似乎無法讓它正常工作。
編輯:vim -p * 很有幫助,但我想找到一個完全符合我上面概述的解決方案。將每個文件放在自己的“終端”選項卡中將允許我單獨打開/關閉/暫時掛起它們,並且通常會更加方便。
答案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 = 勝利!