So fügen Sie Tabulatorzeichen ein, wenn die Option expandtab in Vim aktiviert ist


352

Wenn ich mich im Einfügemodus befinde und die expandtabOption aktiviert ist, führt das Drücken von Tab ↹zum Einfügen der konfigurierten Anzahl von Leerzeichen.

Aber gelegentlich möchte ich ein tatsächliches Tabulatorzeichen einfügen.

Wissen Sie, wie das geht?

Antworten:


516

Sie können <CTRL-V><Tab>im "Einfügemodus" verwenden. Fügt im Einfügemodus <CTRL-V>eine wörtliche Kopie Ihres nächsten Zeichens ein.

Wenn Sie dies häufig tun müssen, schlug @ Dee`Kej (in den Kommentaren) die Einstellung Shift+ vor Tab, um eine echte Registerkarte mit dieser Zuordnung einzufügen:

:inoremap <S-Tab> <C-V><Tab>

Wie von @feedbackloop angegeben, müssen Sie unter Windows möglicherweise <CTRL-Q>eher drücken als <CTRL-V>.


33
Verwenden Sie dann ., um den letzten Befehl zu wiederholen, wenn Sie mehrere Registerkarten einfügen möchten.
— Xavier T.

10
Ich hatte einige Probleme mit dieser Kombination, weil ich mich im Befehlsmodus befand. Stellen Sie sicher, dass Sie diesen Befehl im EDIT-Modus ausführen.
— mgfernan

11
INSERT-Modus, technisch.
— mkmurray

2
Hinweis: Wenn Sie gVim unter Windows verwenden, müssen Sie wahrscheinlich stattdessen CTRL+ Qverwenden - siehe stackoverflow.com/questions/6951672/…
— feedbackloop

8
Ich habe nur eine einfache Verknüpfung für diesen Fall und es scheint zu funktionieren (nichts anderes zu beschädigen): inoremap <S-Tab> <C-V><Tab>- Sie können es in Ihre ~/.vimrcDatei einfügen.
— Dee'Kej

34

Sie können die Option "expandtab" in Vim wie folgt deaktivieren:

:set expandtab!

oder

:set noet

PS: Und setzen Sie es zurück, wenn Sie mit dem Einfügen der Registerkarte fertig sind, mit "set expandtab" oder "set et".

PS: Wenn Sie in .vimrc (Softtabstop) einen Tabulator festgelegt haben, der 4 Leerzeichen entspricht, können Sie ihn auch auf 8 Leerzeichen setzen, um einen Tabulator einfügen zu können, indem Sie die Tabulatortaste einmal statt zweimal drücken (setzen Sie softtabstop = 8) ).


Kurzum: set etund set noetzu wechseln tabund spacenach Bedarf.
— Eric Wang

Strg + V verursachte das Einfügen und ich hatte keine Zeit, die Tastenkombinationen anzupassen. Dies half
— Shirish Hirekodi

2

Aus der Dokumentation zu expandtab:

expandtabVerwenden Sie, um eine echte Registerkarte einzufügen, wenn diese aktiviert ist . Siehe auch und ins-expandtab . Diese Option wird zurückgesetzt, wenn die Option festgelegt ist, und wiederhergestellt, wenn die Option zurückgesetzt wird.CTRL-V<Tab>:retab
pastepaste

Wenn Sie also eine Zuordnung zum Umschalten der pasteOption haben, z

set pastetoggle=<F2>

du könntest es auch tun <F2>Tab<F2>.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.