Zur Verdeutlichung: Ich frage nicht, wie ich den Cursor ändern soll, wenn ich vim in einem Terminal verwende . Ich möchte, dass sich der Cursor ändert, wenn ich im vi-Modus von Bash zwischen Eingabe- und Befehlsmodus wechsle:
set -o vi <CR> type some text <ESC> (the cursor changes shape/color)
i (cursor change back) etc...
Ich habe ein Skript gefunden , das das Ändern der Farbe des Cursors bei Modusänderungen in zsh ermöglicht , aber ich möchte nicht nur für diese eine Funktion die Shells ändern.
Gibt es eine Möglichkeit, den Cursor dazu zu bringen, die Form zu ändern, wie in gvim (oder sogar nur die Farbe), wenn zwischen dem Befehls- und dem Einfügemodus in der Bash-Befehlszeile gewechselt wird?
bash
vi
line-editor
joecan
quelle
quelle
Antworten:
füge diese zwei Zeilen zu ~ / .inputrc hinzu :
quelle
set show-mode-in-prompt on
in~/.inputrc
auch diese Arbeit zu machen.Von hier kopiert - Befehlszeilenbearbeitung im VIM-Stil
Sollte in
bash
4.3 verfügbar sein - siehe Changelog -bash
4.3 ist derzeit in derrc
Phase, Sie sollten in der Lage sein, Pakete für die meisten Distributionen zu erhalten, ohne sie aus dem Quellcode zu kompilieren, jedoch nicht in den Hauptrepositorys. Z.B. Ubuntu (amd64) hier und Debian (experimentelles Repo) hier .quelle
Ich habe keine wirkliche Lösung gefunden, aber vielleicht könnte Ihnen (oder jemand anderem) dies helfen, eine bessere Lösung zu finden.
Sie müssen ein Skript erstellen (zB kmtest.sh)
und nachdem du es zu deiner PS1 hinzugefügt hast, so etwas wie:
aber wie gesagt, es ist nicht das, was du willst, weil es die Cursorfarbe erst nach einem cr ändert. Viel Glück
gb
quelle
Es sieht so aus, als gäbe es eine Möglichkeit, dies durch Hacken der Readline zu erreichen. Vielleicht könnten wir darauf drängen, dass es zum Mainstream wird?
Hier ist meine Antwort auf SO https://stackoverflow.com/a/12201092/255961, die ich aktualisieren werde, wenn ich weitere Informationen erhalte.
quelle
Während es nicht genau das ist, was Sie wollen (den Cursor dynamisch ändern), wird Bash 4.4 / Readline 7.0 Unterstützung für das dynamische Ändern der Eingabeaufforderung hinzufügen . Sie können benutzerdefinierte Modusindikatoren für Einfüge- / Befehlsmodi angeben (Dies ist anders als die aktuelle
show-mode-in-prompt
Option, die für die Verwendung mit+
und fest codiert ist:
).Leider befinden sich diese Versionen derzeit in der Beta und scheinen noch nicht alle Fehler behoben zu haben. Außerdem fehlt ihnen die Möglichkeit, in der Eingabeaufforderung anzugeben, wo die Modusanzeige erscheinen soll.
In der Zwischenzeit habe ich gepatchte Versionen von Bash 4.3 / Readline 6.3 auf Github mit dieser Funktionalität veröffentlicht.
quelle
Ich habe die gleiche Frage vor einiger Zeit bei AskUbuntu gestellt, als ich von Gvim auf Console Vim umgestiegen bin.
Ich erhielt eine Antwort, die jedoch das Umschalten der Einstellungen des Gnome-Terminals beinhaltete. Diese Einstellungen wurden auf alle Terminals angewendet. Somit war es möglich, dass der Gnome-Terminal-Cursor zeitweise im falschen Zustand steckte.
Ich bin immer noch daran interessiert, ob Sie eine zufriedenstellende Lösung erhalten, aber im Laufe der Zeit habe ich mich an das Fehlen von Modusstatusinformationen im Cursor gewöhnt. Vielleicht drücke ich einfach öfter die Escape-Taste (z. B.
esc
um sicherzustellen, dass ich mich im Befehlsmodus befinde;esc i
um sicherzustellen, dass ich mich im Einfügemodus befinde). Vielleicht schaue ich mir den Status an, der unten auf dem Bildschirm angezeigt wird. vielleicht habe ich gerade den modus verinnerlicht.quelle