Wie ich jetzt einfüge:
- Rechtsklick / Kopieren oder einfach markieren.
- Rechtsklick / Einfügen oder Mittelklick oder STRG + UMSCHALT + V.
- Einrückungen erscheinen in zunehmenden Intervallen: 0, 2, 4, 6, +
Frage zur Hand:
Bei früheren Recherchen habe ich festgestellt, dass die schnelle und schmutzige Lösung Folgendes in meine .vimrc
Datei eingibt : set paste
. Diejenigen, die diesen Befehl vorgeschlagen haben, gaben jedoch an, dass dies set paste
Auswirkungen auf andere Einstellungen hat. (Ich vergesse es auf Anhieb.)
Ich würde gerne wissen, welche Option ich einstellen kann, die einfach ohne zusätzliche Einrückung einfügt. Wenn das so ist'paste'
, würde ich gerne wissen, was genau dieser Befehl bewirkt.
Ich sehe nur einen Unterschied. Wenn in Vim, -- INSERT --
wird-- INSERT (paste) --
vimrc
indentation
os-clipboard
onebree
quelle
quelle
]p
, wodurch die Einrückung eingefügt und angepasst wird, um korrekt zu sein.Antworten:
OK, hier ist ein "Yank & Put" -Primer…
In Vim sind die Hauptbefehle zum Ziehen (Kopieren) und Einfügen (Einfügen)
y
undp
.Durch Ziehen wird der gezogene Text in ein Register eingetragen. Dieses Register ist
"
standardmäßig das unbenannte Register, es können jedoch auch andere Register verwendet werden:In ähnlicher Weise wird beim Einfügen Text aus einem Register eingefügt. Dieses Register ist standardmäßig das unbenannte Register, es können jedoch auch andere Register verwendet werden:
Diese Befehle werden "Rechtsklick / Einfügen oder Mittelklick oder STRG + UMSCHALT + V" vorgezogen, da der Text ohne besondere Behandlung in den Puffer "eingefügt" wird. Mit "Rechtsklick / Einfügen oder mittlerer Klick oder STRG + UMSCHALT + V" wird der Text so in den Puffer eingefügt, als ob Sie ihn eingegeben hätten, und wird daher automatisch eingerückt / formatiert.
Wenn Sie SSH ohne X-Weiterleitung oder Vim ohne Unterstützung der Zwischenablage nicht verwenden
"+p
oder"*p
über SSH arbeiten können,paste
deaktiviert die Option das automatische Einrücken und eine Reihe anderer sehr nützlicher Optionen, damit Ihr eingegebener Text nicht geändert wird.Wie in erwähnt
:help 'paste
, haben die Optionen möglicherweise sehr schlimme Nebenwirkungen. Daher ist es wichtig, sie sofort nach dem Einfügen Ihres Textes zu deaktivieren:Dieser Tanz ist offensichtlich ein Schmerz im Arsch, daher gibt es eine andere Option, mit der Sie eine spezielle Verknüpfung zum Umschalten definieren können
paste
:Das lindert die Schmerzen leicht:
Aber es ist immer noch ein Schmerz.
Wenn Sie können, wird empfohlen, ein geeignetes Vim mit Unterstützung für die Zwischenablage zu installieren, damit Sie
"*p
oder"+p
(je nachdem, wie Sie Ihren Text kopiert haben) Text richtig einfügen können .Referenz:
quelle
"*p
. Tippe ich es im Ansichtsmodus? Oder zum hinzufügen.vimrc
?p
, aber zum Einfügen aus der OS-Zwischenablage. Siehe vi.stackexchange.com/q/84/205VIM verfügt über eine andere Einstellung
pastetoggle
, die die Zuordnung für das Umschalten des Einfügemodus definiert. Das ist, was Sie tun möchten, und dann können Sie einfach den Einfügemodus aktivieren und dann einfügen.Obwohl ich das etwas weniger intuitiv finde und oft festgestellt habe
]p
, dass es eine bessere Möglichkeit ist, Code einzufügen, anstatt nur zu verwendenp
quelle
Wenn Sie einen ziemlich modernen Terminalemulator verwenden, können Sie das Plugin vim-bracketed-paste installieren .
Aus den Dokumenten:
Nach der Installation können Sie im Einfügemodus einfach wie gewohnt einfügen und das Einfügen und Deaktivieren des Einfügens wird für Sie erledigt.
quelle
yo
/yO
Operatoren, dieo
undO
Operatoren imitieren , jedoch nur,set paste
bis der Einfügemodus beendet wird.Um Text ohne automatisches Einrücken in vim einzufügen, müssen Sie Vim in den Einfügemodus versetzen. Dies ist nützlich, wenn Sie Text aus einem Fenster ausschneiden oder kopieren und in Vim einfügen möchten. Dadurch werden unerwartete Auswirkungen vermieden. Siehe:
:help paste
für weitere Details.Um das Leben zu erleichtern, gibt es eine
pastetoggle
Variable, die die Tastenfolge angibt, mit der die Option 'Einfügen' (:set invpaste
) umgeschaltet wird .Wenn Sie beispielsweise F2die automatische Indentierung beim Einfügen in das Terminal in X deaktivieren möchten, können Sie den folgenden Code in Ihre
.vimrc
Datei verwenden:quelle
Unimpaired.vim löst dieses Problem auf die effizienteste Weise, die ich je gesehen habe. Es enthält einige Zuordnungen, um den
'paste'
aktivierten Einfügemodus aufzurufen, und deaktiviert ihn dann automatisch, wenn Sie in den normalen Modus zurückkehren.yo
öffnet eine neue Zeile unter dem Cursor;yO
über. (Genau wieo
undO
.)Das Plugin bietet auch eine Reihe weiterer nützlicher Zuordnungen zum Navigieren in Listen, zum Ändern allgemeiner Einstellungen und für einige raffinierte Textkonvertierungen. Die Zuordnungen sind beispielhaft: Sie fühlen sich in Vim heimisch an, ohne auf vorhandene Funktionen zuzugreifen.
Ich gebe nur die Details im vorherigen Absatz an, da viele nur ungern ein Plugin installieren würden, um das vorliegende Problem zu lösen. Ich denke jedoch, dass sie mit den anderen (nicht verwandten) Dingen, die Unimpaired.vim zu bieten hat, zufrieden wären.
quelle
Wenn Sie sich auf einem Server oder System befinden, auf dem Sie die Konfiguration nicht ändern können oder möchten, ist dies am schnellsten
Dadurch wird der Einfügemodus bei deaktiviertem Autoindent aktiviert, in den Sie Ihren Text einfügen. Wenn Sie fertig sind, müssen Sie eingeben
in einer eigenen Zeile, um die Einfügung zu beenden.
quelle