Insérer des onglets en mode INSERT lorsque expandtab est défini


12

J'ai mis expandtabdans mon .vimrcfichier pour convertir taben plusieurs spacecaractères. Cependant, certains fichiers (comme Makefile) nécessitent que le tabcaractère soit inséré.

Existe-t-il un moyen simple de forcer l'insertion tabpendant que je tape?

Réponses:


27

Au lieu d'appuyer simplement sur Tab, appuyez d'abord sur Ctrl-Vpuis sur Tab.

Cela peut être utilisé pour insérer une variété de caractères spéciaux. Voir :help i_CTRL-Vpour plus de détails.

Ctrl-Vfonctionne également en mode ligne de commande ( :help c-CTRL-V), et même dans certains autres programmes entièrement. (par exemple bash, mutt.)

Si vous avez Ctrl-Vmappé à autre chose, essayez Ctrl-Q. Cela a le même effet dans Vim que Ctrl-V, mais certains terminaux l'utilisent pour contrôler le flux, auquel cas Vim ne le verra jamais.


5
Ou <c-v>009en cas de touche Tab cassée ou puriste hardcore ASCII :-)
Martin Tournoij

17

Plutôt que de changer votre comportement (ce qui est sujet aux erreurs).
Je configurerais vim pour qu'il se comporte différemment pour ce type de fichier.

Donc, dans mon édition normale, j'étends les onglets. Mais spécifiquement pour les makefichiers, j'ai défini le noexpandtabafin que les onglets soient conservés.

Ajoutez ce qui suit à votre fichier ~ / .vimrc:

" Normal action
set expandtab

if has("autocmd")

    " If the filetype is Makefile then we need to use tabs
    " So do not expand tabs into space.
    autocmd FileType make   set noexpandtab

endif

3
J'ai répondu à sa question, mais vous avez en fait compris que le problème sous-jacent est bien meilleur que moi. Bon travail.
Rich

Je pense que les deux réponses sont précieuses. Parce que parfois vous êtes connecté quelque part à distance et que vous ne voulez pas jouer avec la configuration de vim, mais que vous souhaitez simplement modifier rapidement un Makefile.
Daniel Schmitz
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.