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?

Devemouse
quelle

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>.

Michael Anderson
quelle
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) ).

Jahanzeb Farooq
quelle
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>.

Eugene Yarmash
quelle