Numerische Tastaturtasten in vi fügen Buchstaben anstelle von Zahlen ein

Ich bin neu bei vi. Eigentlich verwende ich es nur, um kleine Textdateien zu ändern. Ich habe ein ernsthaftes und, glaube ich, ungewöhnliches Problem mit dem Ziffernblock, wie folgt: Ich schreibe vi INund drücke die Eingabetaste. Dadurch erhalte ich Zugriff auf die Datei mit dem Namen IN. Dann benutze ich die Pfeiltasten (oder hjkl), um den Cursor durch die Datei zu bewegen. Dann drücke ich izum Aktivieren insert modeund schreibe. Hier kommt das Problem: Nummernblock funktioniert nicht richtig, da bekomme ich pqrstuvwxylwenn ich drücke 0123456789+( ,.-*/=funktioniert noch).

Warum wurde meine Frage hierher migriert? Das Problem lag nicht am Mac, sondern am Vi. Tatsächlich funktionierte der Ziffernblock, wie gesagt, nicht nur in Vi . Im Gegenteil, es hat immer im Terminal oder in anderen Anwendungen funktioniert.

Antworten (2)

Soweit ich weiß, gibt es zwei mögliche Modi für Nummerntastaturen von VT100-Terminals: den normalen Numeric-Keypad-Modus und den Application-Keypad-Modus . Letzteres lässt die Tastaturtasten keine Zahlen senden, sondern Escape-Sequenzen. Die Taste '1' sendet zB <ESC>[Oq, die Taste '2' sendet <ESC>[Or, von denen nur die Buchstaben q und r auf dem Bildschirm sichtbar sind. Dies sind Steuersequenzen, die das Programm (Host) als Befehle für einige Funktionen interpretieren kann. In diesem Modus werden die Keypad-Tasten also praktisch als zusätzliche Funktionstasten verwendet.

Gemäß dem VT100-Terminalstandard kann ein Programm (Host) das Terminal "auffordern", die Tastatur in den Anwendungsmodus zu schalten. (Dies kann durch Senden einer bestimmten Steuersequenz an das Terminal erfolgen.) Vi und Vim sind dafür bekannt. Der Modusschalter ist nicht universell, sondern von Programm zu Programm: Er ist nur in dem Programm aktiv, das ihn angefordert hat. In anderen Programmen, einschließlich der Shell, bleibt die Tastatur im Zahlenmodus. Die Standardeinstellung in Terminal.app von OS X besteht darin, Programmen zu erlauben, in den Anwendungsmodus zu wechseln, was Sie jetzt deaktiviert haben, indem Sie die Option „VT100-Anwendungstastaturmodus zulassen“ deaktivieren. (Übrigens: In OS X 10.7 heißt diese Option "Striktes VT100-Tastaturverhalten".)

Siehe auch:

http://www.vt100.net/docs/vt100-ug/chapter3.html https://ttssh2.osdn.jp/manual/en/usage/tips/appkeypad.html

Vielleicht habe ich den Sinn deines Schreibens nicht verstanden. Wenn ich im Terminal bin, funktioniert die Tastatur gut (fügt Zahlen ein). Das "seltsame" Verhalten trat nur im Einfügemodus von Vi auf.
Der Moduswechsel ist nur in dem Programm aktiv, das ihn angefordert hat (hier: vi). Die Tastatur funktioniert also in anderen Programmen, einschließlich der Shell, normal. Ich habe diese Klarstellung der Antwort hinzugefügt.

Ich habe das Problem selbst gelöst, aber ich würde gerne wissen, WARUM meine Lösung funktioniert. Ich habe die Option, die der rote Pfeil im folgenden Bild anzeigt, deaktiviert eintreten. Dies ist italienisch, aber die englische Version desselben Fensters ist hier

Aber ich kann mich nicht erinnern, dies aktiviert zu haben, aber da ist es.

Die Bearbeitung ist irreführend. Es ist falsch, dass " ich mich nicht erinnere, dies aktiviert zu haben "; im Gegenteil, ich bin mir sicher, dass ich es in diesem Fenster nie aktiviert habe !
Außerdem gab es einen Teil, in dem ich jemanden bat, mir zu sagen, warum diese Option diese Konsequenz hatte, ob es andere Konsequenzen gibt und ob es möglich ist, dass ich sie durch den Nebeneffekt eines Tippfehlers aktiviert habe.
AFAIK, die Option ist standardmäßig aktiviert (zumindest ist sie auch auf meinem Mac aktiviert und ich bin mir ziemlich sicher, dass ich sie nicht absichtlich selbst aktiviert habe). Was Ihren zweiten Kommentar betrifft: Siehe die Bemerkung im Bearbeitungsverlauf zu in Antworten versteckten Folgefragen.
Die Option ist standardmäßig nicht aktiviert.
Hast du dafür eine Referenz? Ich habe gerade einen neuen Benutzer auf El Capitan erstellt, Terminal gestartet und die Option war standardmäßig aktiviert.
Die Referenz ist, dass ich immer den Ziffernblock verwendet habe, um Zahlen in Vi einzufügen. Wie auch immer, vielleicht hätte die Option durch das Upgrade von Yosemite auf El Capitan aktiviert werden können (ich bin mir dennoch sicher, dass ich die Zahlen nach dem Upgrade mit dem Ziffernblock eingegeben habe ).
Früher war es standardmäßig aktiviert. Ab OS X 10.11 El Capitan ist es standardmäßig deaktiviert. Vim aktiviert den Application Keypad Mode (DECKPAM), ohne Standardzuordnungen bereitzustellen. Ich konnte nicht herausfinden, warum Vim dies tut. Ich denke, es sollte entweder Standardzuordnungen liefern oder DECKPAM standardmäßig nicht aktivieren.