Terminal: Möglichkeit, den Tab-Titel zur Laufzeit umzubenennen

Erstellt am 31. Mai 2019  ·  56Kommentare  ·  Quelle: microsoft/terminal

Tabs sind sehr nützliche Funktionen, aber wenn Sie immer mehr Tabs öffnen, wird es schwierig und verwirrend, den Überblick zu behalten, welcher Tab für welchen Zweck dient, es sei denn, Sie verwenden den Tab. Es ist besser, wenn wir die Registerkarte umbenennen und ihr einen Anzeigenamen geben können.

Die Umbenennung der Registerkarten können wir aus funktionaler Sicht folgendermaßen implementieren:

1 - Rechtsklick -> Umbenennen

Klicken Sie mit der rechten Maustaste auf eine Registerkarte, die der Benutzer umbenennen möchte. Dadurch wird das Kontextmenü geöffnet und aus dem Kontextmenü wählt der Benutzer Umbenennen aus.

Der Titel der Registerkarte ändert sich in ein Textfeld, und der Benutzer kann den Namen der Registerkarte eingeben. Wenn Sie die Eingabetaste auf der Tastatur drücken oder auf eine beliebige Stelle außerhalb des Textfelds klicken, wird der Titel der Registerkarte angewendet. Wenn der Benutzer die ESC-Taste drückt, werden die Änderungen verworfen.

image

2 - Doppelklick - Registerkartentitel

Der Titel der Registerkarte ändert sich in ein Textfeld, und der Benutzer kann den Namen der Registerkarte eingeben. Wenn Sie die Eingabetaste auf der Tastatur drücken oder auf eine beliebige Stelle außerhalb des Textfelds klicken, wird der Titel der Registerkarte angewendet. Wenn der Benutzer die ESC-Taste drückt, werden die Änderungen verworfen.

Das Endergebnis sieht wie folgt aus:

image

Area-User Interface Issue-Feature Product-Terminal Resolution-Fix-Committed

Hilfreichster Kommentar

Beachten Sie, dass Sie den Titel auch über die Befehlszeile mit title "new title" in cmd und $Host.UI.RawUI.WindowTitle = "new title" in Powershell festlegen können

Alle 56 Kommentare

Könnte der Profilname nicht standardmäßig für den Tab-Titel verwendet werden, aber vielleicht eine Option, um stattdessen einen Pfad anzuzeigen?

Der Pfad ist normalerweise im Pomp, also nicht sicher, ob er in beiden benötigt wird.

Der Pfad ist da, weil die Shell dort _put_ hat. Für Diskussionen darüber und die Vorzüge von Titeln, #608. Dies ist eine etwas andere Frage.

Könnte der Profilname nicht standardmäßig für den Tab-Titel verwendet werden, aber vielleicht eine Option, um stattdessen einen Pfad anzuzeigen?

Der Pfad ist normalerweise im Pomp, also nicht sicher, ob er in beiden benötigt wird.

Das Profil zeigt nur die CMD oder PowerShell.. Aber ich schlage vor, Tab mit einem Anzeigenamen umbenennen zu können.

Ich bin mir ziemlich sicher, dass dies eine Teilmenge einer der Lösungen ist, die ich in diesem Thread vorgeschlagen habe:

Wenn wir nur 2 Modi verwenden würden, könnten wir dies auf zwei Arten tun:

  1. Fügen Sie dem Profil eine optionale Zeichenfolge titleText:string . Wenn dies festgelegt ist, zeigen wir diese Zeichenfolge anstelle des Titels des Terminals an.

    • Dies hat den Nachteil, dass nicht standardmäßig der Profilname verwendet wird. Der Benutzer müsste diese Zeichenfolge manuell festlegen.

    • Wenn sich der Profilname ändert, müsste der Benutzer dies ebenfalls manuell ändern.

    • Es ist vielleicht nicht ganz klar, dass titleText bedeutet, dass wir dies anstelle des Titels des Terminals verwenden, aber im Idealfall wird die Benutzeroberfläche der Einstellungen dies besser erklären und der tatsächliche Schlüssel spielt keine so große Rolle.

Könnte der Profilname nicht standardmäßig für den Tab-Titel verwendet werden, aber vielleicht eine Option, um stattdessen einen Pfad anzuzeigen?
Der Pfad ist normalerweise im Pomp, also nicht sicher, ob er in beiden benötigt wird.

Das Profil zeigt nur die CMD oder PowerShell.. Aber ich schlage vor, Tab mit einem Anzeigenamen umbenennen zu können.

Das Umbenennen der Registerkarte würde bedeuten, dass der Name vorhanden ist, bis diese Registerkarte geschlossen wird. Mein Vorschlag wäre, einem Profil zu erlauben, einen vom Benutzer gewählten Namen zu haben

Ich denke jedoch, dass ich dies offen lasse, um das Hinzufügen einer Schaltfläche zum Kontextmenü der Registerkarte zu verfolgen, um den Titeltext des Profils festzulegen.



ähm, jetzt, wo ich das eingegeben habe, sollten wir vielleicht einen Laufzeittext haben, den wir ändern. Ich denke an den Fall, in dem ein Benutzer mehrere Registerkarten mit demselben Profil geöffnet hat. Wenn der Benutzer eine der Registerkarten umbenennen möchte, möchte er wahrscheinlich nicht, dass dieser Name global auf alle Registerkarten mit diesem Profil angewendet wird. Sie wollen wahrscheinlich nur diese Registerkarte _one_ umbenennen.

Dies sollte also das Setzen eines Flags auf der Registerkarte beinhalten, dass ein Laufzeittitel anstelle des Titels aus dem Steuerelement verwendet wird, und wir sollten alle Titeländerungen aus dem Steuerelement einfach ignorieren. Wenn die Titeleinstellung des Profils geändert wird, ignorieren wir dies ebenfalls.

Obwohl eine Frage hier wäre, sollte diese benutzerdefinierte Zeichenfolge für die Registerkarte oder den fokussierten Bereich gelten? Ich würde wahrscheinlich davon ausgehen, dass es für die Registerkarte gilt, nicht für den Bereich.

@zadjii-msft sollte es für die Registerkarte gelten. Auch wenn es klarer Text ist, sollte es das Laufzeit-Flag auf false setzen. Dadurch kann die Registerkarte auch mit der Verwendung des Profilnamens beginnen.

@carlos-zamora wollte an Tab-Aktionen arbeiten, und ich denke, das passt ziemlich gut. Er hat es sogar vorgeschlagen! Hier ist der Deal: Es gibt hier eindeutig drei verschiedene Denkrichtungen bezüglich des Titels, also ist dies jetzt Spec Needed . :Lächeln:

@carlos-zamora wollte an Tab-Aktionen arbeiten, und ich denke, das passt ziemlich gut. Er hat es sogar vorgeschlagen! Hier ist der Deal: Es gibt hier eindeutig drei verschiedene Denkrichtungen bezüglich des Titels, also ist dies jetzt Spec Needed . 😄

JAWOHL! Ich möchte diese Funktion unbedingt haben. Definitiv eine Frage, wie dies mit der Shell/Distribution interagiert, die einen Titel an die Registerkarte sendet (#608). Mir ist auch aufgefallen, dass die Hovering-Aktion darin enthalten sein sollte (dh: Beim Hovern über die Registerkarte wird der vollständige Pfad unter der Maus angezeigt [try on Edge]). @cinnamon-msft und ich werden bald eine Spezifikation erstellen. Wir sind super aufgeregt!

Suepr. Lassen Sie mich wissen, wie ich als Entwickler dazu beitragen kann.

Beachten Sie, dass Sie den Titel auch über die Befehlszeile mit title "new title" in cmd und $Host.UI.RawUI.WindowTitle = "new title" in Powershell festlegen können

Wir sollten #608 verwenden, um Probleme mit der Tab-Betitelung zu verfolgen. Vielen Dank!

Beachten Sie, dass Sie den Titel auch über die Befehlszeile mit title "new title" in cmd und $Host.UI.RawUI.WindowTitle = "new title" in Powershell festlegen können

Sehr hilfreich! Ich habe meinem Powershell-Profil eine Funktion hinzugefügt, damit ich es einfacher einstellen kann:

function Set-Title {
    param(
        [string]
        $title
    )
    $Host.UI.RawUI.WindowTitle = $title   
}

Beachten Sie, dass Sie den Titel auch über die Befehlszeile mit title "new title" in cmd und $Host.UI.RawUI.WindowTitle = "new title" in Powershell festlegen können

Beim Ausführen von npm-Aufgaben wie npm run serve wird der Titel zu npm .

Eine einfache Möglichkeit, einen Namen für die geöffneten Registerkarten festzulegen, würde sie noch nützlicher machen. Wenn mehrere PowerShell-Registerkarten geöffnet sind, finde ich es schwierig zu wissen, in welcher ich arbeiten möchte.

@greggbjensen benutze einfach eine Funktion oder einen Alias ​​wie den obigen Kommentar von tvsbrent

@phuclv90 ein Rechtsklick zum schnellen

Es wäre wirklich schön, Tabs umbenennen zu können, indem man einfach darauf doppelklickt und einen neuen Titel in einer Art Textfeld setzt. Dieser Name ersetzt den ursprünglichen Titel und bleibt bestehen, bis der Tab geschlossen oder erneut umbenannt wird.

Ursprünglich gepostet von @Vasiliy-Bondarenko in #3387

Bitte erlauben Sie das einfache Umbenennen des Tabs mit einem Anzeigenamen über die Benutzeroberfläche. Dies ist eine Funktion, die ich ständig mit ConEmu verwende, und ein Grund, warum ich noch nicht zum Windows-Terminal wechsle, da es nicht praktisch genug ist, wenn Sie viele "nun "Bekannte" Registerkarten geöffnet, können dies jedoch im Windows-Terminal nicht leicht herausfinden

Habe gerade entdeckt, dass ich zumindest den Titel in WSL mit einer Funktion umgehen kann, die zu .bashrc hinzugefügt wird und die von der Eingabeaufforderung aufgerufen werden kann, z. B. title "my title" :

title() {
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}$1\a\]\[\033[01;34m\]\w\[\033[00m\]> "
}

Das ist eigentlich kein _Workaround_, das ist der beste und flexibelste und robusteste Weg, um den Titel fast jedes Terminalfensters festzulegen. Es kann dynamisch sein, es funktioniert über SSH und es kann Dinge integrieren, die nur auf dem Remote-Host verfügbar sind.

Ich habe die von @xoofx gepostete Lösung

title() {
    PS1="\[\e]0;$* \a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
}

Es sieht ein bisschen hässlich aus, aber wenn du das in dein ~/.bashrc , kannst du title <title_text> aufrufen und es wird der Tab-/Fenstertitel gesetzt, aber es wird nicht mit die Standard-Eingabeaufforderung.

In iTerm auf dem Mac kann ich dies tun und es ist wirklich nützlich. Ich kann auch die Tab-Farbe einstellen, was ganz nett ist.

Ich verwende fast ausschließlich Ubuntu WSL im Windows Terminal, und alle meine Registerkarten zeigen " myname@mycomputer/c/g ", wobei "g" der erste Buchstabe des Stammverzeichnisses ist, in dem sich alle meine Projekte befinden. Es ist für mich völlig nutzlos. Zweifellos gibt es eine Möglichkeit, dies zu ändern, aber eine benutzerfreundliche Möglichkeit wäre schön.

:))) Ich verwende WSL. Ich möchte den Tab "mein Monitor" umbenennen, ich habe verwendet: "my monitor ; source run.sh"

Die obige Strategie von

Die obige Strategie von

Um fair, @quanticle ‚s Lösung ist _even besser (!) _ Wenn Sie es einrichten als auch auf dem Remote - Server auf! Auf diese Weise kann der Titel des Fensters widerspiegeln, _auf welchen Server Sie gerade zugreifen_, und die Shell kann alle dynamischen Informationen eingeben, die für eine Remote-Sitzung von Bedeutung wären. Das ist etwas, was ein lokales Überschreiben des Tab-Titels _nie_ erreichen kann, selbst wenn es perfekt implementiert wäre.

@DHowett-MSFT Das wäre wahr, wenn Sie möchten, dass der Titel "auf welchem ​​Server Sie sich befinden", aber nicht unbedingt, wenn der Titel so etwas wie eine "Aufgabe" widerspiegeln soll. Ich verwende also möglicherweise mehrere Server, aber für unterschiedliche Aufgaben und möchte diese Aufgaben in verschiedenen Terminal-Registerkarten behalten ... und ich möchte, dass der Name bestehen bleibt, wenn ich zwischen den Servern in diesen Registerkarten hin und her wechsle ...

Dies ist der letzte und einzige Grund, warum ich wt nicht als Hauptterminal-Tool unter Windows auswählen kann.
:(

Aus diesem Grund ist Windows Terminal auch für mich nicht nützlich, ich habe am Ende viele Registerkarten namens node und kann sie nicht ändern (auch nachdem ich versucht habe, über den Json zu ändern und title und andere Lösungen zu verwenden).

Am Ende habe ich viele Registerkarten namens node,

Okay, das ist jetzt ein ziemlich gutes Beispiel für ein Szenario, das dies _braucht_, und das bloße Festlegen des Titels von der Shell wird nicht behoben. Danke für die Rückmeldung!

Das könnte helfen:

set PROMPT=$e]0;$p$e$p$g

https://github.com/microsoft/terminal/issues/2304#issuecomment -528319270

Für mich ist diese Aufgabe Parität mit cmder/etc. Ich habe oft mehrere Projekte in einem bin Ordner oder ähnlichem geöffnet, daher wäre es hilfreich, benutzerdefinierte Labels anwenden zu können.

Ein weiterer Anwendungsfall wäre die Interaktion über SSH, um Namen aus Linux-Umgebungsvariablen abzurufen und mit dem letzten Teil des Verzeichnispfads zu kombinieren, beispielsweise den Namen der Registerkarte:
$PROJECTROOT $CONFIG src/path/to/dir
(und dann den Anfang des Pfads abschneiden, zu wissen, dass sich mein Verzeichnis irgendwo unter /user/username befindet, ist weniger nützlich, als das Ende des Pfads zu kennen)

Dies sollte auch über die Befehlszeile konfigurierbar sein.

Wenn wir also etwas tun wie:

wt.exe -p "profil1"

Wir sollten in der Lage sein, ein Argument hinzuzufügen, das den Namen der Registerkarte angibt, wie zum Beispiel:

wt.exe - "profile1" -name "Name für Tab 1"

Dies würde natürlich auch mit jedem "new-tab" auf der Kommandozeile funktionieren.

Dankeschön.

@mfeemster danke für den Vorschlag! Ich habe das zu der Mega-Liste der Arbeiten hinzugefügt, die wir in #4632 nach Befehlszeilenargumenten suchen:

  • [ ] Unterstützung für -t,--title title hinzufügen, um den Starttitel einer neuen Terminalsitzung festzulegen (zu terminal_parameters hinzufügen)

Übrigens, wenn Sie diese Funktion hinzufügen, sollte auch die Breite der Fensterregisterkarten berücksichtigt werden.
feste Breite, da 16-Zeichen zu viel Platz für Kurznamen verschwenden, verbirgt auch wichtige Informationen für Langnamen.

Ich schlage vor :

  • die Tab-Breite sollte 4 bis 24 Zeichen betragen, automatische Anpassung nach Tab-Name.
  • und entfernen Sie die Kopf-/Schwanz-Leerstellen.
  • Wenn kein Symbol festgelegt ist, entfernen Sie auch das Leerzeichen.
  • Fügen Sie eine Konfigurationsoption hinzu, um die Schließen-Schaltfläche "X" zu deaktivieren. unterstützt nur das Schließen des Rechtsklickmenüs.

putty-tab
Sparen Sie mehr Platz für echte Informationen. 😃

@fanlix freut euch zu wissen, dass eure Anfragen größtenteils schon von verfolgt werden

  • #597 - Weitere Optionen für die Tab-Größen außer nur equal und sizeToContent
  • #3327 - Theming-Optionen, einschließlich des Entfernens des 'X'

Beachten Sie, dass Sie den Titel auch über die Befehlszeile mit title "new title" in cmd und $Host.UI.RawUI.WindowTitle = "new title" in Powershell festlegen können

Dies dient nur zum Umbenennen der Konsole.
Das Ziel dieser ursprünglichen Anfrage besteht jedoch darin, Registerkarten in der Konsole umzubenennen.
Bitte behalte dies im Hinterkopf :)

Dies dient nur zum Umbenennen der Konsole.
Das Ziel dieser ursprünglichen Anfrage besteht jedoch darin, Registerkarten in der Konsole umzubenennen.
Bitte behalte dies im Hinterkopf :)

Sie sollten sich bewusst sein, dass das Ändern des Titels von "der Konsole", wenn die Konsole in einem Tab gehostet wird, _den Titel des Tabs ändert_. :Lächeln:

Sie sollten sich bewusst sein, dass das Ändern des Titels von "der Konsole", wenn die Konsole in einem Tab gehostet wird, _den Titel des Tabs ändert_. 😄

Ja, du hast recht. :-)
Mir ist nicht aufgefallen, wie dies implementiert wurde, da es auch den Namen der Konsole umbenennt ...

Tatsächlich wird der Name der Registerkarte, auf die Sie sich gerade konzentrieren, zum Titel der Konsole in der Taskleiste.
Und als Konsequenz, wenn Sie mit mehreren Konsolen parallel arbeiten (für mehrere Aufgaben mit unterschiedlichen Remoting-Tab-Listen), sind die Namen der Konsolen nicht stabil und Sie müssen erneut suchen: "In welcher Konsole ist mein Tab?"

In ISE ist dies getrennt.
Sie haben für den Konsolennamen in der Taskleiste:

$Host.UI.RawUI.WindowTitle = "new title"

und für die Registerkartennamen in der Konsole haben Sie:

$psISE.CurrentPowerShellTab.DisplayName = "tab title"

Ein Problem mit $Host.UI.RawUI.WindowTitle = "new title" ist, dass sich der Titel der Registerkarte in npm ändert, wenn ich npm run dev ausführe

Cmder macht es gut.

Dies ist die perfekte Idee für meinen Produktivitäts-Tracker, der Registerkartennamen verwendet. Es wäre toll, es in der Laufzeit zu automatisieren. Meine Arbeit rund um:
(Ich bekomme jedes Mal ein Update, wenn ich die Konsole lösche, was viel ist

## UI
    $pIcon = "💥"
    $tIcon = "😍"
      function trloc ($pth){
        $pwd -replace [regex]::Escape($HomeDir), $pth
      }

  # Comand line
    function prompt {
      (trloc($pIcon)) + "💁‍"
    }

  # Tab - Window - Title - Name as actual path (Shorted because I'am using ManicTime to track my productivity)
    function tabName { $Host.UI.RawUI.WindowTitle = trloc($tIcon) }
    function c { tabName; Clear-Host }

Dies ist die perfekte Idee für meinen Produktivitäts-Tracker, der Registerkartennamen verwendet. Es wäre toll, es in der Laufzeit zu automatisieren. Meine Arbeit rund um:
(Ich bekomme jedes Mal ein Update, wenn ich die Konsole lösche, was viel ist

## UI
    $pIcon = "💥"
    $tIcon = "😍"
      function trloc ($pth){
        $pwd -replace [regex]::Escape($HomeDir), $pth
      }

  # Comand line
    function prompt {
      (trloc($pIcon)) + "💁‍"
    }

  # Tab - Window - Title - Name as actual path (Shorted because I'am using ManicTime to track my productivity)
    function tabName { $Host.UI.RawUI.WindowTitle = trloc($tIcon) }
    function c { tabName; Clear-Host }

Hi. Bitte, welchen Tracker verwendest du?

Hi. Bitte, welchen Tracker verwendest du?

ManicTime
Jetzt unter Linux ist ActivityWatcher auch in Ordnung, ich hoffe, dass es schneller wächst :)

Die Powershell hilft nur, wenn du so läufst. Wenn Sie SSH-Terminals mit openssh ausführen, wäre es schön, Tabs umzubenennen, um zu wissen, auf welchem ​​​​Host ich mich befinde. Es nimmt den ersten Host auf, zu dem Sie gekommen sind, und danach wird es angezeigt, aber wenn Sie den Server wechseln, wird es nicht aktualisiert. Ich würde mich über eine R-Klick-Option zum Umbenennen oder sogar über eine Umgebungsvariable freuen, die ich einstellen könnte.

Ich meine, das ist nur etwas, das Sie auf diesen Servern konfigurieren können. :)

Sie sagen das, wenn wir über 1000 Server sprechen. Ich probiere das über xshell aus, und ich habe einen Bastion-Host, von dem ich springe, und suche nach einer einfachen Möglichkeit, den Servernamen zu verfolgen. Mit xshell wird dies mit Skripten erledigt, die ich intern verwende.

Obwohl ich mit printf \033]0; spiele und anscheinend tue, was ich brauche.

: tada:Dieses Problem wurde in #5775 Windows Terminal Preview v1.1.1671.0 .:tada:

Praktische Links:

Wow.. Herzlichen Glückwunsch, Team :D Entschuldigung, ich habe nicht viel an dem Thread teilgenommen.. aber ich habe ihn genau verfolgt. Es gab mir einen großartigen Einblick in die Planung von Funktionen von Microsoft. Ich habe Microsoft immer vertraut Wie es in ein großartiges Feature umgewandelt werden kann, ist das, was dieser Thread wirklich lehrt.

Ja, Glückwunsch an das Team.

Ich vermisse noch eine Sache, die Möglichkeit, in die Registerkarte doppelklicken, um sie umzubenennen, ist diese Funktion geplant?

Sie müssen in der Lage sein, eine Tastenbelegung für das Umbenennen von Registerkarten festzulegen (F2 wäre standardmäßig sinnvoll?)

@Inrego Sie können einfach mit der rechten

@mfeemster eine Konsolenanwendung erscheint mir als etwas, das keine Maus zum Betrieb benötigen sollte.

Außerdem möchte ich die Benennung von Tabs in meinem Passwort-Manager automatisieren, wenn ich mich an einem Server anmelde.
Im Moment habe ich es umgangen, indem ich mit der Befehlspalette eine neue Registerkarte mit dem gewünschten Namen geöffnet habe. aber es ist nicht ideal.

Es gibt eine KB-Verknüpfung, um einen neuen Tab zu öffnen. Ich würde argumentieren, dass das Umbenennen einer Registerkarte eine Aktion sein könnte, die häufiger ausgeführt wird als das Öffnen einer Registerkarte. Oder es gibt auch eine KB-Verknüpfung, um alle Registerkarten zu schließen. Auch eine Aktion, die seltener ausgeführt wird. Nur weil Sie eine Registerkarte selten umbenennen, bedeutet dies nicht, dass Sie davon ausgehen können, dass dies für alle eine seltene Aktion ist. Was ich damit sagen möchte, sollte nicht wirklich der Grund sein, es umzusetzen oder nicht, da es sehr subjektiv ist und von Person zu Person unterschiedlich ist.

Sie müssen in der Lage sein, eine Tastenbelegung für das Umbenennen von Registerkarten festzulegen (F2 wäre standardmäßig sinnvoll?)

Sie können dies mit einer Tastenbelegung für renameTab tun, aber im Moment können Sie nur einen Titel hartcodieren. Es gibt einen offenen PR (#7462), der openTabRenamer hinzufügt. Wir müssen zu dieser offenen PR zurückkehren.

Genau das brauche ich, danke. Ich werde dieser PR folgen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen