Vim in OSX: Wie mache ich Page-up/Page-Down/gehe über eine im Terminal geöffnete VIM-Datei zu EOL?

In Putty, wie ich hauptsächlich VIM verwendet habe, könnte ich Folgendes tun:

  • Seite nach oben/unten: Mit der nativen Seite nach oben / unten-Taste. In Mac ist die Alternative Fn + Up/Down, was im Terminal nicht funktioniert (scrollt nicht in der VIM-Datei, sondern scrollt den Terminalpuffer)
  • Ebenso bringen mich die Tasten Fn + rechts/links nicht zum Anfang/Ende der Zeile

Wie emuliere ich diese Funktionalität in Mac OS X ?

Author: daviesgeek, 2011-09-15

4 answers

Dies ist nicht speziell eine Mac-Frage, das ist wirklich eine vi-Frage.

Im Navigationsmodus scrollt Strg-f eine Seite nach unten und Strg-b eine Seite nach oben (denken Sie an "F"orward und "B"ack). Strg-d scrollt eine halbe Seite nach unten und Strg-u scrollt eine halbe Seite nach oben.

^ führt Sie zum Anfang einer Zeile und $ zum Ende. Ich weiß, ich weiß, aber dafür gibt es historische Gründe.

Hier ist ein wirklich guter Spickzettel für vi-Steuerelemente. vi ist ein bisschen arkan, aber einmal sie verinnerlichen es, es ist der schnellste und glatteste Texteditor der Welt.

 57
Author: Dan Ray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-09-15 12:47:38

Standardeinstellungen des Terminals Map Shift-Seite nach oben und Shift-Seite nach unten zu den Zeichenfolgen, die Programme wie Vim und Emacs zum Scrollen auffordern (ESC [ 5 ~ und ESC [ 6 ~).

Wenn Sie möchten, dass diese Tasten Zeichenfolgen ohne den Modifikator Shift an das Terminal senden, können Sie die Tastaturzuordnung anpassen:

Terminal > Einstellungen > Einstellungen > [Profil] > Tastatur

Wenn du das tust, ich empfehlen Sie, die Bedeutung des Modifikators Shift für diese Tasten umzukehren, indem Sie die Zuordnungen für die verschobenen und nicht geschalteten Tasten austauschen, damit die alternativen Verhaltensweisen weiterhin verfügbar sind. Siehe auch das Menü View, das Scrollbefehle enthält, die den Modifikator Command verwenden, sodass sie unabhängig von der Tastaturzuordnung des Terminals verfügbar sind.

Ähnlich, Shift-Startseite und Shift-End werden zugeordnet, um zum Anfang/Ende zu gelangen der aktuellen Zeile (ESC [ H und ESC [ F). Diese Sequenzen werden von Bash verstanden, aber Sie müssen Vim möglicherweise anpassen, um sie zu verstehen, oder die Zuordnungen speziell für Vim bearbeiten. Vim, Emacs und einige andere Programme senden eine Escape-Sequenz, um das Terminal in den "Application Cursor Mode" zu versetzen, in dem die Home/End-Tasten ESC O H und ESC O F senden, aber Terminal (ab 10.9) implementiert dieses Verhalten nicht. Möglicherweise möchten Sie die Tastaturzuordnung ändern, um stattdessen diese anderen Codes zu senden (Bash versteht auch davon). (Auf anderen Betriebssystemen werden , und End für den Anfang/das Ende der Zeile verwendet, sodass Terminal ihnen den Modifikator Shift für die Symmetrie zur Verfügung stellt.)

Kontrolle-Linke Pfeil und Steuerung-Rechtspfeil werden standardmäßig auch Sequenzen "An Anfang/Ende der Zeile verschieben" zugeordnet, obwohl sie sich von denen unterscheiden, die zugeordnet sind.- Startseite und Shift-Ende. Stattdessen sind sie den Emacs zugeordnet - und Bash-kompatible Sequenzen ESC [ 5 D und ESC [ 5 C. Angenommen, diese werden von Vim nicht verwendet, besteht der einfachste Ansatz darin, Vim so anzupassen, dass diese mit ~/akzeptiert werden.vimrc.

Beachten Sie, dass Terminal in neueren Versionen von macOS standardmäßig keine expliziten Zuordnungen mehr für Home und End in den Einstellungen enthält. Stattdessen hat es ein dynamisches Verhalten, bei dem die Tasten automatisch dem Start-/Zeilenende zugeordnet werden, wenn der alternative Bildschirm aktiv ist-z. B. bei Verwendung einer Vollbildanwendung wie emacs, vim, screen oder tmux. Wenn Sie ein zeilenorientiertes Programm wie eine Shell auf dem Hauptbildschirm verwenden, scrollen sie standardmäßig durch die Terminalansicht. Der Modifikator Shift kehrt das Verhalten um.

 16
Author: Chris Page,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-06 03:36:10

Die einfachste und beste Lösung ist n+, wobei n die Anzahl der Zeilen ist, die Sie nach unten gehen möchten, und die Abwärtstaste ist.

Ich mache es regelmäßig einfach 12+ und 22+.

 3
Author: T.Woody,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-09-10 06:06:53

Ich war es gewohnt, mich im Einfügemodus (von Windows und ich denke Linux) an den Anfang und das Ende der Zeilen zu bringen, was Mac nicht unterstützt. Dies ist besonders ärgerlich, da ich es auch nicht einfach tun kann, wenn ich vim auf einem Remote-System verwende. Nach einigen schmerzhaften Versuchen und Irrtümern habe ich einige .vimrc Zeilen gefunden, die dasselbe tun, und schließlich jemanden gefunden, der eine ähnliche Lösung gefunden hat hier:

Https://coderwall.com/p/fd_bea

Viel Spaß.

:inoremap <C-e> <C-o>$
:inoremap <C-a> <C-o>0
 1
Author: user1442960,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-08-03 01:34:51