Wenn ich vim unter dem GNU-Bildschirm ausführe, stelle ich fest, dass Kombinationen CTRLmit den Pfeiltasten und den Pg * -Tasten nicht wie erwartet funktionieren.
Ich verwende das Ubuntu 10.10- vim-gnome
Paket.
Auf einem anderen Computer, auf dem auch Ubuntu ausgeführt wird, funktionierte dies ohne Probleme. Leider steht mir diese Konfiguration derzeit nicht zur Verfügung.
Hier gibt es eine verwandte Frage: Wie kann man Strg + Pfeile in Vim korrigieren?
Die dort vorgeschlagene Lösung besteht jedoch darin, die Tastenkombinationen von vim neu zuzuordnen, um mit dem Terminalemulator, in diesem Fall PuTTY, zu arbeiten. Ich kann mich nicht erinnern, etwas Ähnliches getan zu haben, und vermute, dass es eine Bildschirmkonfigurationsoption gibt, mit der dieses Problem behoben werden kann.
Es gibt auch einen Thread auf der Gnu-Screen-Mailingliste, der darauf hinweist, dass das Ausführen von vim via $ TERM=xterm vim
eine geeignete Lösung oder Problemumgehung ist. Das funktioniert, aber ich bin etwas besorgt, dass es Nebenwirkungen geben könnte. Es kommt mir auch nicht bekannt genug vor, um die Lösung zu sein, die ich auf dem anderen Computer eingerichtet habe (wenn eine Lösung erforderlich war).
quelle
term xterm
zu meiner~/.screenrc
Datei hat es für mich behoben. Danke noch einmal!Antworten:
Wie in seinem Update angegeben, scheint das Hinzufügen
term xterm
zur~/.screenrc
Datei dieses Problem zu beheben.quelle
screen
die$TERM
Umgebungsvariable nicht einfach weitergegeben wird, anstatt sie zu überschreiben"screen"
. Vermutlich gibt es einige Umstände, unter denen dies wichtig ist$TERM == screen
.TERM=screen
ist, dass Anwendungen, die in einem Bildschirmterminal ausgeführt werden, innerhalb eines Bildschirmterminals kommunizieren: Die Steuersequenzen, die sie senden und empfangen, sind die des Bildschirms und nicht die des Terminals, auf dem der Bildschirm selbst angezeigt wird. Da Sie eine Bildschirmsitzung trennen und erneut an einen anderen Terminaltyp anschließen können, ist diese Indirektionsebene erforderlich.xterm
?infocmp screen
undinfocmp xterm
und die Bildschirm-Escape-Sequenzen mit den xterm-Escape-Sequenzen . Ich habe keine Aufschlüsselung zu bieten; Die meisten Anwendungen haben nichts dagegen, aber einige verhalten sich möglicherweise ärgerlich.Es gibt verschiedene andere Möglichkeiten, das Terminal festzulegen, die in laufenden Prozessen funktionieren:
Wenn Sie in einer laufenden Bildschirminstanz
^A
-:
und den Befehl drücken,term xterm
werden neu geöffnete Bildschirme unter dieser Instanz mit der$TERM
Umgebungsvariablen auf gestartetxterm
. Dies wird sich wiederum auf aufgerufenevim
Instanzen ausbreiten . Diese vim-Instanzen zeigen ein korrektes Verhalten in Bezug auf STRG-Combos. Ich habe noch keine Nebenwirkungen dieser Strategie entdeckt. Dieser Befehl wirkt sich nicht auf vorhandene Bildschirme aus. Dieser Befehl kann natürlich in einer~/.screenrc
Datei verwendet werden, daher ist es möglich, dass diese Methode auf dem anderen Computer verwendet wurde.In einer laufenden vim-Instanz bewirkt der Befehl
set term=xterm
, dass STRG-Combos in dieser vim-Instanz funktionieren. Dies hat den Nebeneffekt, dass die X-Zwischenablage (dh@*
und@+
) aus Gründen, die ich noch nicht verstehe, getrennt wird. Interessanterweise tritt der Nebeneffekt der Zwischenablage auch auf, wenn der Befehl:set term=screen
in einer vim-Instanz ausgeführt wird, mit der begonnen wurde$TERM=xterm
.quelle
Das zugrunde liegende Problem besteht darin, dass die Zuordnung
screen
zwischen dem tatsächlichen Terminal (identifiziert durch dieTERM
Umgebungsvariable außerhalbscreen
) und der Emulation innerhalbscreen
unvollständig ist.Wenn Sie es zufällig testen (mit vttest oder Tack ), stellen Sie möglicherweise Mängel für fest
Der Versuch , diese Probleme zu beheben , indem Sie
term
in.screenrc
hat den Nachteil , dass es nur für eine bestimmte Ist-Terminal, und ist nicht tragbar zu anderen Terminal - Implementierungen funktioniert. Die Dokumentation NotizenEs gibt eine andere Lösung (mit einem anderen Nachteil), die diese Funktion aus der
screen
Dokumentation verwendet :ncurses bietet für diesen Fall mehrere nützliche alternative Terminalbeschreibungen, z. B. screen.xterm-new , um Probleme bei der Bildschirmzuordnung zu beheben. In der Praxis verwende ich
TERM=xterm-new
und bekomme beim Ausführen des Bildschirms eine verwendbare Zuordnung von Funktionstasten.Wenn Sie auf die Bildschirmeinstellungen zurückgreifen
term
, werden Sie beim Testen möglicherweise feststellen, dass es immer noch Probleme mit der Zuordnung gibt, die in diesen Alternativen behandelt werden. Wenn es möglich wäre, eine genaue Terminalbeschreibung mit zu erhaltenterm
, wären diese Alternativen einfache Aliasescreen
. Sie sind nicht.ncurses ist nicht bieten
screen.xterm
(sic ! ) , weil:TERM=xterm
wird häufig für Terminalemulatoren missbraucht, die sich von xterm unterscheiden; Das Hinzufügen dieser Zuordnung würde diese Situation nur verschlimmern (siehe zum Beispiel Warum nicht einfach TERM verwenden, das auf "xterm" gesetzt ist? In den häufig gestellten Fragen zu ncurses).screen.xterm
ist weniger wahrscheinlich, dass der alternative Name auf Remote-Systemen installiert wird (siehe Änderungskommentar vom Juni 2015 in der Terminaldatenbank).Im Großen und Ganzen ist die Verwendung der alternativen Namen jedoch eine Verbesserung gegenüber der Verwendung
term
in Ihrem.screenrc
: Sie löst mehr Probleme als sie verursacht. Das Gegenteil gilt für dieterm
Einstellung.quelle