web-dev-qa-db-fra.com

Le moyen le plus rapide de rétablir des espaces en TAB dans VIM

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.

38
skippr

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)

48
skippr

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.

21
user1646075

Tapez simplement set noexpandtab. Peut-être que vous liez cela à une touche de fonction.

11
ThorstenS

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'

0
pdoherty926

Seule cette configuration m'a aidé à résoudre ce problème.

filetype plugin indent on
filetype detect
autocmd FileType make set noexpandtab
0
Mike Pylypyshyn

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.


source

0
matusf