Comment insérer un caractère de tabulation lorsque l'option expandtab est activée dans Vim

352

Lorsque je suis en mode insertion et que l' expandtaboption est activée, une pression sur Tab ↹entraîne l'insertion du nombre d'espaces configuré.

Mais de temps en temps, je veux insérer un caractère de tabulation réel.

Sais-tu comment faire cela?

devemouse
la source

Réponses:

516

Vous pouvez utiliser <CTRL-V><Tab>en "mode insertion". En mode <CTRL-V>insertion , insère une copie littérale de votre personnage suivant.

Si vous devez le faire souvent, @ Dee`Kej a suggéré (dans les commentaires) de définir Shift+ Tabpour insérer un véritable onglet avec ce mappage:

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

De plus, comme indiqué par @feedbackloop, sous Windows, vous devrez peut-être appuyer <CTRL-Q>plutôt que <CTRL-V>.

Michael Anderson
la source
33
Et puis utilisez .pour répéter la dernière commande si vous souhaitez insérer plusieurs onglets.
Xavier T.
10
J'ai eu quelques problèmes avec cette combinaison car j'étais en mode commande. Assurez-vous d'exécuter cette commande en mode EDIT.
mgfernan
11
Mode INSERT, techniquement.
mkmurray
2
Remarque: Si vous utilisez gVim sous Windows, vous devrez probablement utiliser CTRL+ à la Qplace - voir stackoverflow.com/questions/6951672/…
feedbackloop
8
J'ai juste un raccourci simple pour ce cas et il semble fonctionner (ne casser rien d'autre): inoremap <S-Tab> <C-V><Tab>- Vous pouvez le mettre dans votre ~/.vimrcfichier.
Dee'Kej
34

Vous pouvez désactiver l'option expandtab depuis Vim comme ci-dessous:

:set expandtab!

ou

:set noet

PS: Et le remettre en place lorsque vous avez terminé avec l'onglet d'insertion, avec "set expandtab" ou "set et"

PS: Si vous avez un jeu de tabulations équivalent à 4 espaces dans .vimrc (softtabstop), vous pouvez également le mettre à 8 espaces afin de pouvoir insérer un tabulation en appuyant une fois sur la touche tabulation au lieu de deux (set softtabstop = 8 ).

Jahanzeb Farooq
la source
En bref: set etet set noetpour changer tabet spaceselon les besoins.
Eric Wang
Ctrl + V a provoqué le collage et je n'ai pas eu le temps de régler les raccourcis clavier. Cela a aidé
Shirish Hirekodi
2

De la documentation sur expandtab:

Pour insérer un véritable onglet lorsqu'il expandtabest activé, utilisez . Voir aussi et ins-expandtab . Cette option est réinitialisée lorsque l' option est définie et restaurée lorsque l' option est réinitialisée.CTRL-V<Tab>:retab
pastepaste

Donc, si vous avez un mappage pour basculer l' pasteoption, par exemple

set pastetoggle=<F2>

vous pourriez aussi faire <F2>Tab<F2>.

Eugene Yarmash
la source