Skrypt do otwierania niestandardowej sesji terminala

0

Nie jestem pewien, czy tytuł trafił w to, co chcę zrobić, ale oto:

Pracuję nad projektem Pythona, który obejmuje wiele klas. Używam Terminal Vima do edycji.

Jak możesz sobie wyobrazić, trudno jest otworzyć 10 różnych zakładek terminala, nadać im tytuły i ręcznie otworzyć w nich właściwy plik.

Chciałbym utworzyć skrypt, który używa vima do otwierania wszystkich plików w katalogu na różnych kartach w tym samym oknie. Chciałbym, aby skrypt tytułował karty jako nazwę pliku, który otwiera.

Używam terminala gnome.

Logicznie wiem, jak mogłem to zrobić, ale po prostu nie mogę znaleźć poleceń, których potrzebuję.

Wygląda na to, że będę w stanie zrobić to, czego nie chcę za pomocą polecenia gnome-terminal, ale wydaje mi się, że nie mogę tego zrobić poprawnie.

EDYCJA: vim -p * jest pomocny, ale chciałbym znaleźć rozwiązanie, które robi dokładnie to, co opisałem powyżej. Posiadanie każdego pliku we własnej zakładce TERMINAL pozwoliłoby mi otworzyć / zamknąć / tymczasowo zawiesić je indywidualnie i ogólnie zapewniłoby większą wygodę.

Luke
źródło

Odpowiedzi:

1

Jeśli dobrze rozumiem twoje pytanie, to czego potrzebujesz, to opcja -p. vim -p * otworzy wszystkie pliki w bieżącym katalogu na własnych kartach w tym samym oknie.

WrathOfTux
źródło
Po prostu oszalałem.
Łukasz
Chętnie pomoże. ;)
WrathOfTux
0

Po krótkiej pogawędce mogłem zrobić to, co chciałem za pomocą prostego skryptu perl:

Wcześniej byłem rozłączany, ponieważ nie mogłem otworzyć zakładki w tym samym oknie. Teraz zdaję sobie sprawę, że polecenie zostało zbudowane w celu utworzenia nowej instancji okna terminala.

Więc:

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

nie otworzy nowej karty, tak jak chciałem, ale otworzy nowe okno (def to nazwa mojego profilu)

ALE:

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

Otworzę 2 zakładki w jednym oknie (tylko nie moje obecne okno, co jest w porządku)

Mogę nadać im tytuł i wykonać polecenia, aby:

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

otwiera nowe okno (pojedyncza karta), otwiera plik foobar.txt w vimie i tytułuje dla mnie kartę

Mając to na uwadze, mogłem napisać następujący program:

workTime.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`
Luke
źródło
0

Możesz przyjrzeć się narzędziu uniksowemu „screen”. Jest to „multiplekser” terminala, który otwiera wiele terminali przez jedno połączenie (ssh, telnet lub lokalny). Można skonfigurować automatyczne otwieranie wielu powłok lub poleceń (np. Vim, top itp.) Na różnych ekranach przy nowym połączeniu. Może także zachować sesje bez rozłączania, więc jeśli jesteś w trakcie edycji dokumentu, a Twój dostawca usług internetowych odpadnie na kilka minut, możesz wrócić do edycji.

ssh + screen + emacs = wygrana!

Jeff-Inventor ChromeOS
źródło