Frage

Ich muß automatische Margen deaktivieren nach der folgenden Anweisung von Bildschirmanleitung in meinem Mac

  

Wenn Ihr Terminal ist ein "true"   Auto-Marge Terminal (es nicht zulässt, dass   die letzte Position auf dem Bildschirm          um ohne Scrollen auf den Bildschirm aktualisiert werden) sollten Sie eine Version mit   Ihr Terminals termcap, dass          verfügt über eine automatische Margen ausgeschaltet.

Wie können Sie die automatische Ränder deaktivieren, indem Sie Ihre Terminals Termcap?

War es hilfreich?

Lösung

Nach XTerm- Steuersequenzen , diese Sequenz sollte das tun, was gefragt wurde:

CSI ? 7 l

Das heißt,

printf '\033[?7l'

Die 7 ist dokumentiert, wie

        Ps = 7  -> Wraparound Mode (DECAWM).

und das letzte Zeichen l (kleines L) bezeichnet dies als Zurücksetzen und nicht als gesetzt Kontrolle.

Für welchen Gründen auch immer, der Name term dafür ist, Unbekannter: „automatische Ränder“. Diese Fähigkeiten term befassen sich mit der Funktion (siehe term (5) ):

   auto_right_margin             am         am        terminal has auto‐
                                                      matic margins
   enter_am_mode                 smam       SA        turn on automatic
                                                      margins
   exit_am_mode                  rmam       RA        turn off automatic
                                                      margins

Interessanterweise ist die VT100-nam Terminal Beschreibung in ncurses (was anscheinend niemand verwendet) initialisiert, das Terminal zu Verwendung automargins Ränder mit dieser Zeichenfolge:

rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, 

(die \E[?7h setzt es), und behauptet, dass das Endgerät nicht automatisch Margen nicht verwendet von Cancelling am . Es hat auch die Fähigkeiten rmam und term smam. So könnte man dies tun, um zu beweisen, dass es funktioniert:

tput rmam
stty columns 999
ps -efwwwwwl

und (für den normalen Benutzer) sieht die ps schön gegen den rechten Rand des Terminalfensters abgeschnitten Inserat.

Die anderen Varianten VT220-nam und VT320-nam erscheinen korrekt ...

Durch die Art und Weise, für Mac , würden Sie die verwenden term Namen wie rmcup , anstatt die Termcap RA , da OSX ncurses' tput (term) anstelle der BSD-Variante.

Lesen Sie auch:

Gelegentlich jemand fragt nach automargins unterdrücken, weil sie annehmen, dass Terminals schwenken kann / blättern Sie nach links / rechts, um die Information zu zeigen, die nicht auf eine neue Zeile umgebrochen wurde. Terminals, die dies tun, sind selten, und OSX-Terminal ist nicht einer von diejenigen . Es verhält sich wie eine Teilmenge von xterm, der sich die Reihe von Dezember Terminals VT52 / VT100 / VT220 / etc emuliert. In diese Frage ist OP besorgt / verwirrt über diesen Absatz aus dem screen Handbuch:

  

Wenn Ihr Terminal ein „true“ ist auto-Marge Terminal (es ist nicht der    letzte Position auf dem Bildschirm ohne Scrollen des Bildschirms aktualisiert werden)   mit einer Version des Terminals Termcap berücksichtigen, die automatischen hat   Margen ausgeschaltet. Dadurch wird eine genaue und optimale Aktualisierung gewährleisten   der Bildschirm unter allen Umständen. Die meisten Terminals haben heutzutage „Magie“   Ränder (automatische Ränder plus nutzbare letzte Spalte). Dies ist die VT100   Style und perfekt geeignet für Bildschirm. Wenn alles was du hast ist ein   „True“ auto-Marge Terminal-Bildschirm wird zufrieden sein, es zu benutzen, aber   ein Zeichen setzen in die letzte Position auf dem Bildschirm Aktualisierung kann nicht   möglich sein, bis die Bildschirmrollen oder das Zeichen in eine bewegt werden   sichere Position auf andere Weise. Diese Verzögerung kann durch die Verwendung eines verkürzt werden   Terminal mit Einsatz-Zeichen-Fähigkeit.

Das letzte Position auf dem Bildschirm bezieht sich auf die untere rechte EckeDas Terminal. Im Normalfall, wenn Sie den Cursor auf der rechten unteren Ecke ist und Sie ein Zeichen zu drucken, würden Sie das Display erwarten um eine Zeile nach oben zu scrollen und das Zeichen in der nächsten Zeile angezeigt. Auch (weil Terminals kann auf verschiedene Weise implementiert werden), einige könnte nach oben, wenn Sie ein Zeichen in der letzten Position drucken . Der VT100 tut dies nicht. Nicht nur, dass es in diesem Fall nicht nach oben, aber es ignoriert nicht druckbare Zeichen, während auf die Marge (siehe xterm FAQ Diese Beschreibung der Verpackung ungerade ist, noch mehr sagen? ). Es gibt eine Flagge term xenl, die zeigen wird gesetzt, wenn das Endgerät dieses besondere Verhalten tut. Etwa ein Drittel der Anschlussbeschreibungen in der Terminal-Datenbank hat diese Flagge. Während die meisten von denen, für Endgeräte, die Sie wahrscheinlich nie begegnen werden, denken Sie daran, dass der Rat in der Handbuchseite wurde in einer Zeit zurückgeschrieben, wenn die anderen Terminals als wahrscheinlich waren als VT100-Doppelgänger zu finden. Der frühe Wechsel vergangener Bildschirm ist schlecht, aber der Text war in 1992 auf Usenet zweiten Posting-Bildschirm Der erste Eintrag im Jahr 1987 sagte etwas ähnliches:

  

Bildschirm   nie schreibt in der letzten Position des Bildschirms, es sei denn, der boolean   Fähigkeit LP in dem termcap Eintrag des Terminals.   Gewöhnlich,    Bildschirm   kann nicht, ob ein bestimmtes Endgerät scrollt vorhersagen, wann   ein Zeichen wird in der letzten Spalte der letzten Zeile geschrieben;    LP gibt an, dass es sicher ist, in dieser Position zu schreiben.   Beachten Sie, dass die LP Fähigkeit ist unabhängig von am (automatische   Ränder); für bestimmte Terminals, wie die VT100, ist es sinnvoll   auf am sowie LP in dem entsprechenden termcap Eintrag   (Die VT100 die Cursor nicht bewegen, wenn ein Zeichen geschrieben wird, in   die letzte Spalte jeder Zeile).

Die spätere Formulierung spiegelt die Tatsache wider, dass das terminfo System war weit verbreitet, und der Name LP wurde nicht Termcap Namen gewählt für die Korrespondenz mit xenl (es ist xn ).

Der Punkt, der all dies ist, dass screen zwischen Programmen zu konvertieren versucht, verschiedene Terminal-Typen zu schreiben und sie alle wie eine Art von Terminal erscheinen - was bedeutet, dass es versucht, Text auf dem Terminal des Display in alle Standorte zu setzen . Die untere rechte Ecke ist ein Problem, weil einige Terminals bewegen würden, den Versuch zu verderben, dort zu schreiben. Zur Umgehung des Problems zur Verfügung gestellt einige Endgeräte eine Alternative:

  • mit einem anderen Modus (Einsatz),
  • setzen Sie den Cursor auf die vorletzter Position der Anzeige
  • Schreib Zeichen zu füllen, drücken ein Zeichen in die letzte Position, und
  • drehen Insert-Modus ausgeschaltet, sobald es fertig ist (sonst ein Ärgernis).

über zwei Drittel der Beschreibungen in der Terminal-Datenbank hat die Fähigkeit, diesen Insert-Modus zu tun ( smir ). Das war noch nicht perfekt, aber es war auf jeden Fall wert im Jahr 1992. Etwa ein Viertel Erwähnen implementieren eine ähnliche ähnliche Funktion ich1 . Einige implementieren beide (und vi von denen verwirren lassen könnten, indem sie versuchen, beide Methoden zu tun).

VT100-lookalikes bietet einen dritten Weg die letzte Position zu schreiben; screen prüft und verwendet, was auch immer es ist.

Andere Tipps

Die meisten Terminal-Emulatoren, einschließlich der Mac Standard-Terminal, sind nicht „true auto-Marge Terminals“ im Sinne hier diskutiert - sie eine VT100-Serie Terminal emulieren, die „smart“ Wraparound hatte. Sie können prüfen, durch cat und Typisierung bis zum Ende der letzten Zeile ausgeführt -., Nachdem Sie das letzte Zeichen eingeben, wird der Cursor am Ende der Zeile bleibt (Hervorhebung die Zeichen, das Sie gerade eingegeben hat), bis Sie ein anderes Zeichen eingeben

Die einzige Folge eines ‚echten Auto-Marge Terminal‘ ist, dass ein Zeichen nicht in der rechten unteren Ecke angezeigt werden (obwohl einige Programme in der Lage sind, um daran zu arbeiten, indem ein Zeichen an Ort und Stelle mit ich / ich1 Verschiebung)

Wenn ich Sie richtig verstehe Sie suchen die autowrap Funktion NO mit terminfo-Datenbank einzustellen. Wenn ja glaube ich Ihnen die -Nam Flagge, um sie auszuschalten verwenden können - so etwas wie VT100-nam sollte es tun. Sie können auch durch einen Blick auf den man-Seiten für term überprüfen.

Wenn diese Frage löst, markieren Sie diese nach oben. (^_^) Wenn nicht ... na ja Kommentar zurück, und ich werde für dich noch einmal überprüfen. Cheers!

Update: Es gibt auch eine Verknüpfung, die auf Sie zutreffen den Wrap aus- und umzuschalten. Überprüfen Sie die Verknüpfung Blatt hier . Und zusätzliche Informationen für Screen können hier (Suche nach Wrap) gefunden werden. Sie können auch überprüfen hier wie setterm verwenden (siehe Abschnitt 17.14 Ändern der Terminal-Einstellungen). Überprüfen Sie auch hier Beispiele für das Ändern von Einstellungen.

Viel Glück wieder. (^ _ ^)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top