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?

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


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


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.