SpaceScrollt in modernen Webbrowsern und anderer Software mit Textinhalten mehr oder weniger einen Bildschirm nach unten. ShiftSpacescrollt in allem aber hoch less
.
Wie kann man ShiftSpacenach oben scrollen less
? Oder gibt es alternativ einen anderen Pager (POSIX-Kompatibilität ist meine einzige Voraussetzung), der die Aufgabe übernehmen könnte?
Mir wurde gesagt, dass einige Terminalemulatoren und einige Terminal-UI-Bibliotheken (ncurses?) Nicht erkennen ShiftSpace. Ist das ein gültiges Problem?
less
, zwischen Space und Shift-Space zu unterscheiden.b
oder^B
(0x2) konfigurieren<shift-Space>
. Beachten Sie, dassb
in vielen Tastaturkonfigurationen direkt über der Leertaste steht/
allgemein als "Suchtext" für verschiedene gängige Tools verwendet werden, bin aber gleichzeitig vorsichtig, übermäßige meglomanische Standards einzuführen, die es noch einfacher machen, etwas zu tun, das ohnehin mit einem (allgemein erkennbaren) Tastendruck möglich ist. Interessant zu erfahren, dass es sich in diesem Fall um eine technische Einschränkung (siehe Antwort von 200_success) und nicht um ein kurzes Design handelt, das dies erklärt.translations
Ressource für das VT100-Widget.Antworten:
Ich denke, Sie haben einen Kulturkampf ausgelöst, der durch eine technische Einschränkung verursacht wurde. Da Shift+ Spacedieselbe Ausgabe wie erzeugt Space, werden sie vom Unix-Terminalmodell identisch behandelt. Um zwischen beiden zu unterscheiden, benötigen Sie eine Programmierumgebung, die Key-Up / Key-Down-Ereignisse unterstützt. Dies ist in X11 und in Terminalemulatoren möglich, die das Neuzuordnen von Schlüsseln unterstützen. Ein Beispiel für die Neuzuordnung von Shift+ Spacezu PageUp:
quelle
xterm -xrm 'XTerm.VT100.translations: #override Shift <KeyPress> space: string(0x2)'
z. B. in xterm oder Sie senden dieselbe Sequenz wie beim Senden<PageUp>
). Dies würde natürlich die Eingabe von Text bei gedrückter Umschalttaste erschweren.In Terminalemulatoren würde diese Funktion die Eingabe von Großbuchstaben mit eingebetteten Leerzeichen unterbrechen, indem die Umschalttaste gedrückt gehalten wird. Wenn Sie beispielsweise "It's A Title" eingeben möchten, müssen Sie die Umschalttaste zwischen "A" und "T" freigeben. Wenn Sie die Taste gedrückt halten, wird der Cursor wegbewegt und der Rest Ihrer Eingabe wird falsch positioniert. Ich glaube, es wäre viel ärgerlicher als das, was Sie mit der Bildlauffunktion gewinnen.
Das normale Verhalten beim Eingeben von Text und das Scrollen nach oben, wenn Space nach unten scrollt, würde ein Redesign und eine intensive Zusammenarbeit von Apps erfordern (z. B. eine App, die umschalten kann, was Shift + Space sendet). Ich bin mir ziemlich sicher, dass dies nicht passieren wird.
Der Hauptunterschied besteht darin, dass eine GUI-App den "Kontext" kennt, unabhängig davon, ob Sie Inhalte bearbeiten oder anzeigen. Terminalemulatoren haben keine Möglichkeit, dies zu erkennen.
quelle
Terminalemulatoren senden dasselbe Zeichen auf Spaceund Shift+Space. Wenn dies nicht der Fall wäre, wäre es umständlich, Text bei Shiftgedrückter Taste einzugeben (siehe die Antwort von @ egmont , die dieses Argument erweitert).
Sie können dies jedoch umgehen, indem Sie Shift+Spaceeiner Zeichenfolge zuordnen, die standardmäßig ein Leerzeichen einfügt und für die Sie Anwendungen konfigurieren können
less
, die bei einem solchen Tastendruck nach oben scrollen möchten.Zum Beispiel könnte eine solche Sequenz sein
`
DEL
SPC
(ändern Sie dasDEL
inBS
auf Systemen, in denen BS daserase
Zeichen ist).Für
xterm
, fügen Sie die Ressource:Und konfigurieren
less
mit:quelle
less
unterstützt dies derzeit nicht, könnte aber definitiv hinzugefügt werden .Wenn ein Programm eine xterm-Steuersequenz verwendet , um
modifyOtherKeys
durch Schreiben\e[>4;2m
in das Terminal auf 2 zu setzen , werden diexterm
Tasten mit zusätzlichen Informationen darüber versehen, welche Modifizierertasten aktiv sind. Speziell für den SpaceSchlüssel, bei demmodifyOtherKeys
in xterm aktiv ist, wird Shift+ Spacezu\e[27;2;32~
.less
müsste dies richtig als Shift+ interpretieren Spaceund dann einen Bildlauf nach oben auslösen.Während dies definitiv in xterm funktionieren würde, würde es nicht in jeder Terminalanwendung funktionieren. Die Terminals, die diese Escape-Sequenz zum Einschalten nicht erkennen,
modifyOtherKeys
ignorieren diese Escape-Sequenz einfach und senden den Programmen weiterhin ein normales Leerzeichen, wenn Sie Shift+ drücken Space.Auf der xterm-Website gibt es eine recht detaillierte Seite, auf der erklärt wird, wie
modifyOtherKeys
Codes berechnet werden: https://invisible-island.net/xterm/modified-keys.htmlquelle