/ / Warum funktioniert Shift Insert nur im Insert-Modus? - Bash, vim

Warum funktioniert Shift Insert nur im Insert-Modus? - Bash, vim

Ich habe gerade versucht, einige Inhalte (in Git Bash auf dem CentOS-Server) mit vim in eine Datei einzuf├╝gen.
Ich habe gerade die Datei ge├Âffnet und versucht mit Verschiebung+einf├╝gen und mir ist aufgefallen, dass die erste h├Ąlfte (grob) abgeschnitten wird, aber wenn ich vim auf einf├╝gemodus setze und dr├╝cke Verschiebung+einf├╝gen alles wird perfekt geklebt.
Haben Sie sich nur gefragt, warum das so ist?

Vielen Dank

Antworten:

24 f├╝r Antwort Ôäľ 1

Beide Verschiebung + Einf├╝gen und "Einf├╝gen"in einem Terminal verhalten sich ├Ąhnlich - sie emulieren Tastendr├╝cke.

Dies ist eine wichtige Unterscheidung, die f├╝r Terminals h├Ąufig nicht m├Âglich ist - tippen Sie oder f├╝gen Sie ein? Hinweis: Einige Terminals unterst├╝tzen "geklammerte Paste"modes, nach @Joshs Kommentar bin ich sogar auf einen gesto├čen vim plugin eingeklammert einf├╝gen xterm die Sie interessieren k├Ânnten.

Ihre eingef├╝gten Daten gehen bis zum ersten Mal verlorenZeichen, das in einen Einf├╝gemodus wechselt. M├Âglicherweise stellen Sie auch fest, dass sich Ihr Cursor bewegt hat und dass sich andere Teile der Datei ge├Ąndert haben (z. B. Gro├č- / Kleinschreibung ge├Ąndert / gel├Âscht / usw.) ...

Wenn Sie zusammenfassend Text einf├╝gen, den Sie in die Datei einf├╝gen m├Âchten, rufen Sie zuerst den Einf├╝gemodus auf.


Kopieren Sie den folgenden Text und f├╝gen Sie ihn in ein Terminal ein, auf dem Vim ausgef├╝hrt wird (nicht im Einf├╝gemodus):

hello how are you

Das Ergebnis entspricht dem Eingeben der gleichen Buchstaben auf Ihrer Tastatur:

Ergebnis des Einf├╝gens in Vim

In diesem Fall bleiben Sie im Einf├╝gemodus ...

Versuchen Sie nun, den Einf├╝gemodus zu beenden - Esc - und Folgendes einf├╝gen

/are
n

Dies f├╝hrt eine Suche nach "are" durch:

Ergebnis des Einf├╝gens in Vim

F├╝gen Sie nun Folgendes ein:

:0
dG

Oh nein ... alles ist weg!

alles weg


Sie finden das auch, wenn Sie Einr├╝ckungen habenaktiviert ist, wird beim Einf├╝gen eines Codeblocks in vim (im Einf├╝gemodus) zu viel einger├╝ckt - es wird automatisch einger├╝ckt, und der eingef├╝gte Code wird einger├╝ckt.

def my_print(message):
print(message)
print("done...")

Code einf├╝gen

Um dies zu beheben, verwenden Sie die :set paste und :set nopaste befehle

Code einf├╝gen (Einf├╝gemodus)