開啟自訂終端會話的腳本

開啟自訂終端會話的腳本

我不確定標題是否表達了我想要做的事情,但它是:

我正在開發一個涉及很多類別的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 = 勝利!

相關內容