Ich habe die Dokumentation durchgesehen und muss sagen, dass ich keine Möglichkeit gefunden habe, den aktuellen vi-Modus zu erkennen und anzuzeigen. Ich hoffe, dass Sie eine angenehme Überraschung haben und jemand eine Lösung findet, aber ich kann auf keinen Fall einen Weg finden, das zu tun, wonach Sie fragen.
Ich denke, es gibt einen Weg, dies zu tun, aber es ist ein gewaltiger Overkill für einen winzigen Ärger, und ich glaube nicht, dass Sie das im Sinn hatten, als Sie diese Frage stellten. Wenn dies zutrifft, hören Sie jetzt auf zu lesen und genießen Sie Ihr Leben.
OTOH, wenn das wirklich dein Lieblingsfieber ist und es dich verrückt macht und du unbedingt dieses Problem lösen willst, hier ist meine Idee, wie du vorgehen sollst:
- Erwerben Sie eine Kopie von Advanced Programming in the UNIX (R) Environment von W. Richard Stevens.
- Lesen Sie die Kapitel zu Streams und Terminal I / O.
- Laden Sie den Quellcode in das oben genannte Buch herunter , das ein Beispiel für einen Stream enthält, der auf ein Terminal geschichtet werden kann.
- Implementieren Sie Ihre Behandlung für die Esc-Tastenkombination (oder beide Tastendrücke zum Ändern des Modus) und zeigen Sie sie über eine Glocke oder eine Hintergrundmanipulation der aktuellen Zeile an.
Kurz gesagt, Unix implementiert Terminal-E / A als Vollduplex-E / A-Stream zwischen dem Gerätetreiber und dem Benutzerprozess, in den Module eingefügt werden können. Es ist als Stapel organisiert, sodass Sie beliebig viele Streams überlagern können. Die Summe der eingespeisten Streams erzeugt Ihr Terminal-E / A-Verhalten.
Wenn ein Zeichen eingegeben wird, muss das erste Modul es überprüfen und weitergeben (wenn es möchte). Wenn die Antwort in die entgegengesetzte Richtung eingeht, kann sie erneut überprüft und weitergeleitet werden. Auf diese Weise wird eine Strg-C-Taste auf einer höheren Ebene als eine normale Zeichentaste behandelt.
Sie können eine Binärdatei erstellen, die ein Stream-Modul implementiert, das beim Aufrufen unbemerkt im Vordergrund ausgeführt wird, alle Tastenanschläge überprüft und weiterleitet und Ihre bevorzugte Aktion für die von Ihnen gewünschten Tastenanschläge ausführt. In jeder Hinsicht sieht es so aus, als würden Sie an der Shell arbeiten. Oooh. Sie können diese Binärdatei in der letzten (oder ersten oder einer beliebigen) Zeile Ihrer .tcshrc-Datei aufrufen, und Sie würden nicht einmal wissen, dass sie vorhanden ist.
Es gibt hier eine gute Grundierung , aber ich konnte nicht viel zu diesem Thema finden, wahrscheinlich, weil es nach der Grundierung ist .