Skript zum Öffnen einer benutzerdefinierten Terminalsitzung

Skript zum Öffnen einer benutzerdefinierten Terminalsitzung

Ich bin nicht sicher, ob der Titel rüberbringt, was ich tun möchte, aber hier ist es:

Ich arbeite an einem Python-Projekt, das viele Klassen umfasst. Für die Bearbeitung verwende ich Terminal Vim.

Sie können sich vorstellen, dass es mühsam ist, 10 verschiedene Terminal-Registerkarten öffnen, ihnen Titel geben und in jeder von ihnen manuell die richtige Datei öffnen zu müssen.

Ich möchte ein Skript erstellen, das vim verwendet, um alle Dateien in einem Verzeichnis in verschiedenen Registerkarten im selben Fenster zu öffnen. Ich möchte, dass das Skript die Registerkarten mit dem Namen der Datei betitelt, die es öffnet.

Ich benutze das Gnome-Terminal.

Logischerweise weiß ich, wie ich es machen könnte, aber ich kann die benötigten Befehle einfach nicht finden.

Es sieht so aus, als ob ich mit dem Gnome-Terminal-Befehl das machen kann, was ich will, aber ich kriege es einfach nicht hin, dass es richtig funktioniert.

BEARBEITEN:vim -p * ist hilfreich, aber ich würde gerne eine Lösung finden, die genau das tut, was ich oben beschrieben habe. Wenn jede Datei in ihrer eigenen Registerkarte TERMINAL ist, kann ich sie einzeln öffnen/schließen/vorübergehend anhalten, was im Allgemeinen bequemer wäre.

Antwort1

Wenn ich Ihre Frage richtig verstehe, möchten Sie die Option -p. vim -p * öffnet alle Dateien im aktuellen Verzeichnis in eigenen Registerkarten im selben Fenster.

Antwort2

Nachdem ich ein bisschen herumgestochert hatte, konnte ich mit einem einfachen Perl-Skript tun, was ich wollte:

Ich war vorher aufgehängt, weil ich keinen Tab im selben Fenster öffnen konnte. Jetzt ist mir klar, dass der Befehl dazu dient, eine neue Instanz eines Terminalfensters zu erstellen.

Also:

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

öffnet nicht wie gewünscht eine neue Registerkarte, sondern ein neues Fenster (ist der Name meines Profils)

ABER:

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

Öffnet 2 Tabs in einem Fenster (aber nicht mein aktuelles Fenster, was ok ist)

Ich kann ihnen einen Titel geben und Befehle ausführen, um:

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

öffnet ein neues Fenster (einzelner Tab), öffnet foobar.txt in vim und betitelt den Tab für mich

Mit diesem Wissen im Hinterkopf konnte ich das folgende Programm schreiben:

Arbeitszeit.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`

Antwort3

Vielleicht möchten Sie sich das Unix-Tool „screen“ ansehen. Es handelt sich dabei um einen Terminal-„Multiplexer“, der mehrere Terminals über eine einzige Verbindung (SSH, Telnet oder lokal) öffnet. Es ist so konfigurierbar, dass bei einer neuen Verbindung automatisch mehrere Shells oder Befehle (z. B. Vim, Top usw.) in verschiedenen Bildschirmen geöffnet werden. Es kann Sitzungen auch über Verbindungsunterbrechungen hinweg aufrechterhalten, sodass Sie, wenn Sie gerade ein Dokument bearbeiten und Ihr ISP für einige Minuten ausfällt, direkt zu den Änderungen zurückkehren können.

ssh + screen + emacs = Gewinn!

verwandte Informationen