J'ai toujours été un pour remplacer les TAB dans VIM avec x quantité d'espaces (généralement 4). Quatre lignes que j'utilise presque toujours dans mon fichier de configuration .vimrc sont:
set tabstop=4
set shiftwidth=4
set expandtab
syntax on
Fondamentalement, il y a des moments où j'ai BESOIN d'utiliser un seul TAB (comme Makefiles), et je ne sais pas comment contourner cela autre que de quitter le fichier, d'éditer mon .vimrc, puis de recharger le fichier d'intérêt.
Cela dit, quel est le moyen le plus rapide (à partir de VIM) pour revenir à l'utilisation de TABS, puis revenir à mes paramètres d'origine? Je recherche la solution la moins compliquée et la moins compliquée.
VIM activera automatiquement le TAB pour un makefile, en supposant que vous l'appelez "makefile", par opposition à "Makefile". Je ne sais pas pourquoi VIM ne détecte toujours pas le type avec une différence minuscule, mais c'est la vie. (@Sedrik)
Cela mis à part, d'autres solutions alternatives sont:
Liaison de type de fichier (@ThorstenS @tungd):
autocmd FileType make setlocal noexpandtab
Commutateur RealTime (@ThorstenS):
En supposant que la configuration .vimrc mentionnée dans la question, faites:
:set noet
(pour passer des espaces à TAB)
et :set et
(pour revenir en arrière)
Utilisez simplement la touche d'échappement magique disponible en mode insertion.
Sur les * NIX, c'est ^ V par défaut lorsque vous êtes en mode insertion. Sous Windows, vous devez découvrir ce qu'est le caractère d'échappement magique - ^ V est pris pour autre chose; Je pense que ce peut être ^ Q ou ^ S?
Alors! Dans votre makefile:
this: this.c
<C-V><Tab>cc this.c
où les significations habituelles s'appliquent:
signifie appuyer sur Ctrl-V (vous devriez voir un ^ se cacher sous le curseur) - appuyez sur la touche de tabulation. Bingo.
Travaille pour moi.
Remarque: si vous utilisez des paramètres vim ou un code de démarrage qui écrase les onglets lorsque vous lisez un fichier, il s'agit évidemment d'une solution à court terme. Je préfère apprendre à utiliser la commande retab pour garantir la propreté d'un fichier, car je n'aime pas qu'un fichier soit touché à moins que je ne le décide consciemment.
Tapez simplement set noexpandtab
. Peut-être que vous liez cela à une touche de fonction.
Vim prend par défaut tabstop=8
et noexpandtab
, les valeurs par défaut sont donc bien adaptées à l'utilisation de Makefiles. Si votre .vimrc utilise des options personnalisées pour tabstop
, expandtab
, etc., une solution simple consiste à contourner votre .vimrc tout en travaillant avec Makefiles.
À partir de la page de manuel (c'est moi qui souligne):
-u {vimrc} Utilisez les commandes du fichier {vimrc} pour les initialisations. Toutes les autres initialisations sont ignorées. Utilisez-le pour modifier un type spécial de fichiers. Il peut également être utilisé pour ignorer toutes les initialisations en donnant le nom "NONE" . Voir ": aide à l'initialisation" dans vim pour plus de détails.
Comme je ne me souviens jamais du drapeau/valeur/formatage nécessaire, j'ai créé un alias Bash qui se souvient pour moi: alias vimnone='vim -u NONE'
Seule cette configuration m'a aidé à résoudre ce problème.
filetype plugin indent on
filetype detect
autocmd FileType make set noexpandtab
Vous pouvez créer une configuration personnalisée par type de fichier.
mkdir -p ~/.vim/after/indent
echo 'set noexpandtab' >> ~/.vim/after/indent/make.vim
Fondamentalement, ici, nous avons créé une nouvelle configuration de retrait pour les makefiles qui seront chargés après d'autres scripts.