Question Tab touche == 4 espaces et auto-indentation après accolades dans Vim


Comment puis-je faire vi-Vim n'utilisez jamais d'onglets (en convertissant les espaces en onglets, mauvais!), fait la touche de tabulation == 4 espaces, et met automatiquement le code en retrait après les blocs accolades comme Emacs Est-ce que?

De plus, comment puis-je sauvegarder ces paramètres pour ne plus avoir à les saisir à nouveau?

J'ai vu d'autres questions liées à cela, mais il semble toujours être un peu loin de ce que je veux.


1054
2017-10-24 17:41


origine


Réponses:


Comme cela a été souligné dans quelques réponses ci-dessous, la méthode préférée est maintenant de ne PAS utiliser smartindent, mais plutôt d'utiliser ce qui suit (dans votre .vimrc):

filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab

Dans ton .vimrc: fichier:

set smartindent
set tabstop=4
set shiftwidth=4
set expandtab

Les fichiers d'aide prennent un peu de temps pour s'y habituer, mais plus vous lisez, plus Vim obtient:

:help smartindent

Encore mieux, vous pouvez intégrer ces paramètres dans votre source pour la portabilité:

:help auto-setting

Pour voir vos paramètres actuels:

:set all

Comme graywh souligne dans les commentaires, smartindent a été remplacé par cindent qui "fonctionne plus intelligemment", bien que toujours principalement pour les langages avec une syntaxe de type C:

:help C-indenting


1573
2017-10-24 17:45



Relié, si vous ouvrez un fichier qui utilise à la fois les onglets et les espaces, en supposant que vous avez

set expandtab ts=4 sw=4 ai

Vous pouvez remplacer tous les onglets par des espaces dans le fichier entier avec

:%retab

199
2017-11-27 05:42



La meilleure façon d'obtenir une indentation spécifique à un type de fichier est d'utiliser filetype plugin indent on dans votre vimrc. Ensuite, vous pouvez spécifier des choses comme set sw=4 sts=4 et dans .vim / ftplugin / c.vim, par exemple, sans avoir à rendre ceux globaux pour tous les fichiers édités et d'autres syntaxes de type non-C seront mises en retrait correctement, aussi (même les lisps).


83
2018-01-04 21:09



Pour avoir des onglets à 4 espaces dans la plupart des fichiers, un véritable onglet à 8 caractères dans Makefiles, et un retrait automatique dans divers fichiers, y compris C / C ++, mettez ceci dans votre ~/.vimrc fichier:

" Only do this part when compiled with support for autocommands.
if has("autocmd")
    " Use filetype detection and file-based automatic indenting.
    filetype plugin indent on

    " Use actual tab chars in Makefiles.
    autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif

" For everything else, use a tab width of 4 space chars.
set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.
set shiftwidth=4    " Indents will have a width of 4.
set softtabstop=4   " Sets the number of columns for a TAB.
set expandtab       " Expand TABs to spaces.

42
2018-01-24 02:42



Sur de nombreux systèmes Linux, comme Ubuntu, le .vimrc le fichier n'existe pas par défaut, il est donc recommandé de le créer en premier.

Ne pas utiliser le .viminfo fichier qui existe dans le répertoire personnel. Il est utilisé dans un but différent.

Étape 1: accédez à votre répertoire personnel

cd ~

Étape 2: Créez le fichier

vim .vimrc

Étape 3: Ajoutez la configuration indiquée ci-dessus

filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

Étape 3: Enregistrer le fichier en appuyant sur Décalage + ZZ.


39
2017-08-04 13:26



La méthode recommandée consiste à utiliser l'indentation basée sur le type de fichier et à n'utiliser que smartindent et cindent si cela ne suffit pas.

Ajoutez ce qui suit à votre fichier .vimrc

set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

J'espère que ça aide comme une réponse différente.


26
2017-11-18 19:08



Du Wiki VIM:

:set tabstop=4
:set shiftwidth=4
:set expandtab

9
2017-10-08 01:26



éditez votre ~ / .vimrc

$ vim ~/.vimrc

ajouter les lignes suivantes:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

9
2017-10-24 17:48



L'auto-retrait est basé sur le mode de syntaxe actuel. Je sais que si vous éditez Foo.java, entrez un { et frapper Entrer indente la ligne suivante.

Comme pour les onglets, il y a deux paramètres. Dans Vim, tapez un deux-points puis "set tabstop = 4" qui définira les onglets à afficher comme quatre espaces. Appuyez à nouveau sur deux points et tapez "set expandtab" qui insérera des espaces pour les onglets.

Vous pouvez placer ces paramètres dans un fichier .vimrc (ou _vimrc sous Windows) dans votre répertoire personnel, vous n'avez donc qu'à les taper une seule fois.


7