Viele Entwicklungsumgebungen erfordern das Ausführen von Dingen in einem Terminalfenster. npm run start oder was auch immer. Ich weiß, dass mein größtes Projekt erfordert, dass ich eine große, schicke Docker-basierte Sache in einem Terminal, Ruby on Rails in einem anderen und Webpack in einem dritten laufen lasse. Ich habe auch an anderen Projekten gearbeitet, die mehrere Terminalfenster erfordern, und ich habe nicht das Gefühl, dass ich da besonders bin. Ich habe von mehreren anderen in dieser Situation gehört. Es ist keine *schlechte* Situation, sie ist nur etwas umständlich und nervig. Ich muss mich an alle Befehle erinnern und meine Befehlszeilenanwendung so einrichten, dass sie sich für mich angenehm anfühlt. Für mich sind geteilte Fenster besser als Tabs, obwohl Tabs für separate Projekte in Ordnung zu sein scheinen.
Ich habe die Frage natürlich auf Twitter gestellt. Ich dachte, ich sammle hier die Optionen.
tmuxwar die beliebteste Antwort. Ich bin mir sehr sicher, dass ich nicht alles verstehe, was es kann, aber ich glaube zu verstehen, dass es "gefälschte" Bereiche innerhalb einer Terminalsitzung erstellt, die mehrere Bereiche emulieren. Diese mehreren Bereiche können also so konfiguriert werden, dass sie gleichzeitig unterschiedliche Befehle öffnen und ausführen. Das fand ich interessant, weil es buchstäblich Tage nachdem unser CodePen-Mitgründer uns allen mitgeteilt hatte, dass die neue Entwicklungsumgebung, an der er arbeitet, tmux verwenden wird, geschah.- Hier ist ein Beispiel für eine Konfiguration für tmux.
- tmuxinator gibt ihm eine bessere Konfiguration, schätze ich?
- Ich wurde von einem Kerl auf kitty aufmerksam gemacht, der mir sagte, dass es sich für ihn wie ein erwachsenes tmux anfühlt. Es kann in Layouts mit Befehlen konfiguriert werden, die beim Start ausgeführt werden.
- Es gibt native Apps für alle Plattformen, die mehrere Bereiche ausführen können.
- macOS: Ich benutze schon lange iTerm, das geteilte Bereiche gut beherrscht. Es kann auch Fensteranordnungen speichern, was ich genutzt habe, aber ich sehe keine eingebaute Option, um Befehle in dieser Anordnung auszulösen. Das native Terminal kann auch Tabs und Teilungen, fühlt sich aber sehr eingeschränkt an.
- Linux: Terminator
- Windows: Das Standardterminal hat Bereiche.
- Es gibt npm-Tools zum Ausführen mehrerer Skripte, wie z. B. concurrently und npm-run-all, aber (glaube ich?) sie sind darauf beschränkt, nur npm-Skripte auszuführen, anstatt beliebige Terminalbefehle. Vielleicht kann man dafür npm-Skripte für diese anderen Befehle erstellen? Aber selbst dann glaube ich nicht, dass man die Ausgabe in verschiedenen Bereichen sehen würde, daher ist es wahrscheinlich am besten für Skripte, die einmal ausgeführt und dann beendet werden, anstatt dauerhaft zu laufen.
Da ich ein Mac-Nutzer bin, interessierten mich am meisten Lösungen, die mit iTerm funktionieren, da ich es sowieso schon benutze. Mangels einer integrierten iTerm-Lösung habe ich erfahren, dass es "skriptfähig" ist. Anscheinend stellen sie die Unterstützung für AppleScript zugunsten von Python ein, aber hey, vorerst scheint es gut zu funktionieren.
Es ist im Grunde das hier

Der Code
tell application "iTerm"
tell current window
create window with default profile
tell current session of current tab
set name to "run.sh"
write text "cd '/Users/chriscoyier/GitHub/CPOR'"
write text "./run.sh"
end tell
create tab with default profile
tell current session of current tab
set name to "Rails"
write text "cd '/Users/chriscoyier/GitHub/CPOR'"
write text "nvm use"
write text "yarn"
write text "bundle install"
write text "yarn run rails"
end tell
create tab with default profile
tell current session of current tab
set name to "webpack"
write text "cd '/Users/chriscoyier/GitHub/CPOR'"
write text "nvm use"
write text "yarn"
write text "yarn run dev"
end tell
# split vertically
# tell application "System Events" to keystroke "d" using command down
# delay 1
# split horizontally
# tell application "System Events" to keystroke "d" using {shift down, command down}
# delay 1
# moving... (requires permission)
# tell application "System Events" to keystroke "]" using command down
end tell
end tell
Ich öffne einfach dieses Skript, drücke auf Ausführen und es erledigt die Arbeit. Ich habe die Kommentare drin gelassen, weil ich herausfinden möchte, wie ich es so einrichten kann, dass es im Split-Screen-Modus funktioniert, wie ich es mag, anstatt in Tabs, aber ich habe das zum Laufen gebracht und wurde dann wieder faul. Es fühlte sich seltsam an, Tastenkombinationen verwenden zu müssen, um es zu erledigen. Daher dachte ich, wenn ich mich schon damit beschäftige, würde ich herausfinden, ob ihre neueren Python-Sachen es direkter unterstützen oder was. Es ist auch lustig, dass ich es nicht in eine kleine Mini-App oder so etwas kompilieren kann. Kann Automator das nicht tun? Schulterzucken.
Die andere beliebte Antwort, die ich für Mac-Nutzer bekam, ist, dass sie Alfred die Arbeit machen lassen. Ich habe mich nie mit Alfred beschäftigt, aber es gibt eindeutig fancy stuff, das man damit machen kann.
Ich denke, das ttab-Paket (https://www.npmjs.com/package/ttab), das jemand anderes erwähnte, ist dem, wonach Sie gefragt haben, viel näher und verwendet die Werkzeuge, die Sie bereits kennen.
Ich würde Sie ermutigen, es sich anzusehen, wenn Sie es nicht getan haben.
Unter MacOS verwende ich jetzt iTemocil, um verschiedene Konfigurationen für iTerm-Layouts einzurichten.
https://github.com/TomAnthony/itermocil
Ich habe ein 3 vertikale Bereiche für eine Angular/Rails-App. Der obere Bereich enthält
ng serve, der mittlere Bereichrails s, der untere Bereichrails coder ein einfaches Terminal für Rails-Unit-Tests.Nützlicher Beitrag!
Beachten Sie, dass Windows Terminal nicht das Standardterminal ist. Es wird von Microsoft entwickelt, aber nicht standardmäßig installiert und muss aus dem Microsoft Store heruntergeladen werden.
https://www.microsoft.com/en-gb/p/windows-terminal/9n0dx20hk701
Nur um ein paar weitere Möglichkeiten zur Verwaltung mehrerer gleichzeitig laufender Terminals hinzuzufügen, wenn Sie VS Code als Ihre IDE verwenden.
Sie können Tasks so einrichten, dass sie gleichzeitig ausgeführt werden, indem Sie die Eigenschaft
dependsOndeklarieren und die Aufgabe, die Sie gleichzeitig ausführen möchten, in die Liste aufnehmen. Der Trick für ein geteiltes Terminal besteht darin, die Eigenschaftpresentationbei jeder abhängigen Aufgabe auf die gleichegroup-Eigenschaft zu setzen.Hier ist ein Beispiel, das zwei Terminals öffnet und in jedem seinen Befehl ausführt
Ich habe iTerm mit einer Reihe von nebeneinander liegenden Bereichen eingerichtet, die einen Befehl starten, der eine Nachricht ausgibt, was geöffnet wird, wenn ich Enter drücke. Wenn ich iTerm starte, lädt es die Einrichtung neu und wartet darauf, dass ich auf den Bereichen Enter drücke.
Ich ließ es anfangs den Code ausführen, aber ich fand, dass ich die Befehle lieber selbst auslösen würde, als sie jedes Mal automatisch auszuführen.
Ich denke, ich habe dieser Anleitung gefolgt, um es zum Laufen zu bringen: https://webstudiya.com/develop-faster-with-iterm-profiles-and-window-arrangements/
Ich denke, es ist ziemlich genau das, wonach Sie suchen.
Die Python-API für iTerm ist ziemlich einfach (auch für einen Anfänger wie mich).
Ich habe eine Anordnung gespeichert, die ich über die API lade. Dann führe ich in jedem Bereich einen Befehl aus
docker-compose upim erstennpm startim zweitenLade eine Python-virtuelle Umgebung in einer dritten
Es erforderte etwas Lernaufwand, wie APIs eben, aber es funktioniert großartig und mit sehr wenig Code.
Hier ist mein Skript
Wenn Sie nicht wirklich separate Terminals benötigen, habe ich festgestellt, dass foreman http://blog.daviddollar.org/2011/05/06/introducing-foreman.html großartig funktioniert. Es ist auch sehr einfach einzurichten, da es eine einzige Textdatei erfordert, die die auszuführenden Befehle auflistet.