vi Shortcuts auf Bash auf Mac funktionieren nicht zB STRG + E, STRG + A [duplizieren]

Ich verwende vi seit Jahren als meinen Haupttexteditor unter Linux (und vor ein paar Jahren auch auf Mac) und auf meinem brandneuen Mac (mit 10.8.4) finde ich, dass ich beim Versuch, eine Datei mit vi in ​​Terminal zu bearbeiten, nicht kann Verwenden Sie die Standard-vi-Tastenkombinationen, z. B. mit 'STRG + E', um zum Ende einer Zeile zu navigieren. Stattdessen wird die Verknüpfung auf die vim-Verknüpfung gesetzt, die '$' ist, um zum Ende einer Zeile zu navigieren. Ich verwende bash. Wie bekomme ich die Standard-vi-Shortcuts?

vi in ​​osx ist vim. :hund überprüfen Sie die Hilfedatei. obwohl schau dir das an howtogeek.com/166616/…
Suchen Sie nach ^A/^E, um in Bash (zum Navigieren in der Befehlszeile) oder in vi/vim zu arbeiten?

Antworten (2)

set -o vi

Fügen Sie das zu Ihrer ~/.bashrc hinzu


Wenn Sie schreiben wollten "Ich kann die Standard- Bash- Shortcuts Ctrl-E und Ctrl-A in vim nicht verwenden", dann fügen Sie diese Zeilen zu Ihrer ~/.vimrc hinzu

map <C-E> $
map <C-A> 0|

Wenn Sie möchten, dass diese auch im Input- Insert-Modus funktionieren , benötigen Sie auch

map! <C-E> <esc>A
map! <C-A> <esc>0i

Diese Karten CtrlAfinden Sie am linken Rand. Wenn Sie zum ersten Nicht-Leerzeichen gehen möchten

map <C-A> ^
map! <C-A> <esc>I
Dadurch wird der vi-Modus in Bash aktiviert, nicht in Vim
So habe ich die Frage interpretiert, aber beim erneuten Lesen haben Sie wohl Recht.
Die Antwort aus diesem Beitrag schien den Trick zu machen. Danke für die sehr schnellen Antworten. apple.stackexchange.com/questions/49749/…

Strg-a für Zeilenanfang und Strg-E für Zeilenende sind Emacs-Kürzel, nicht vi. Daher funktionieren sie nicht in vi.

Nachdem ich vi jahrelang unter Linux verwendet habe, war mir nie klar, dass diese Verknüpfungen von Emacs stammen. Ich habe immer vi verwendet und jeder Linux-Rechner, an dem ich arbeite, hatte diese Verknüpfungen, also waren sie wohl immer speziell aktiviert, ohne zu wissen, dass sie nicht von vi stammten. Danke für den Hinweis.