Comment faire pour que vi - Vim n'utilise jamais de tabulations (conversion d'espaces en tabulations, mauvais!), Crée la touche tabulation == 4 espaces et indente automatiquement le code après les blocs d'accolade comme Emacs ?
De plus, comment puis-je enregistrer ces paramètres afin de ne jamais avoir à les saisir à nouveau?
J'ai vu d'autres questions à ce sujet, mais cela semble toujours un peu différent de ce que je veux.
vim
whitespace
indentation
vi
auto-indent
mmcdole
la source
la source
Réponses:
Comme cela a été souligné dans quelques réponses ci-dessous, la méthode préférée n'est désormais PAS d'utiliser smartindent, mais plutôt d'utiliser ce qui suit (dans votre .vimrc ):
Dans votre fichier .vimrc :Les fichiers d'aide prennent un peu de temps à s'habituer, mais plus vous lisez, mieux Vim obtient:
Encore mieux, vous pouvez intégrer ces paramètres dans votre source pour la portabilité:
Pour voir vos paramètres actuels:
Comme le souligne graywh 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:
la source
Associé, si vous ouvrez un fichier qui utilise à la fois des tabulations et des espaces, en supposant que vous avez
Vous pouvez remplacer tous les onglets par des espaces dans l'ensemble du fichier par
la source
La meilleure façon d'obtenir une indentation spécifique au type
filetype plugin indent on
de fichier est d'utiliser dans votre vimrc. Ensuite, vous pouvez spécifier des choses commeset sw=4 sts=4 et
dans .vim / ftplugin / c.vim, par exemple, sans avoir à les rendre globales pour tous les fichiers en cours de modification et les autres syntaxes de type non-C seront également indentées correctement (même les lisps) .la source
Pour avoir des onglets à 4 espaces dans la plupart des fichiers, un véritable onglet de 8 caractères dans Makefiles et un retrait automatique dans divers fichiers, y compris C / C ++, mettez ceci dans votre
~/.vimrc
fichier:la source
else
? Il me semble que les dernières lignes écrasent le makefile spécifique dans tous les casSur de nombreux systèmes Linux, comme Ubuntu, le
.vimrc
fichier n'existe pas par défaut, il est donc recommandé de le créer d'abord.N'utilisez pas 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éer le fichier
vim .vimrc
Étape 3: ajoutez la configuration indiquée ci-dessus
Étape 3: Enregistrez le fichier en appuyant sur Shift+ ZZ.
la source
Shift + ZZ
pas pour créer un fichier .swp. utiliserwq
.Ctrl-Z
c'est une autre histoire ...)vim -n <file>
. Un fichier d'échange n'est pas quelque chose qui est généré au moment de la sauvegarde; cela irait à l'encontre de son objectif, car les fichiers d'échange deviennent utiles pour récupérer des sessions d'édition interrompues brutalement.La méthode recommandée consiste à utiliser l'indentation basée sur le type de fichier et à n'utiliser smartindent et cindent que si cela ne suffit pas.
Ajoutez ce qui suit à votre .vimrc
J'espère que cela aide car c'est une réponse différente.
la source
éditez votre ~ / .vimrc
ajoutez les lignes suivantes:
la source
Depuis le wiki VIM :
la source
Le retrait automatique est basé sur le mode de syntaxe actuel. Je sais que si vous modifiez Foo.java, puis entrez un
{
et appuyez sur le Enterretrait de la ligne suivante.Quant aux onglets, il existe deux paramètres. Dans Vim, tapez deux points, puis "set tabstop = 4", ce 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 tabulations.
Vous pouvez placer ces paramètres dans un .vimrc (ou _vimrc sous Windows) dans votre répertoire personnel, vous n'avez donc à les taper qu'une seule fois.
la source
Tout d'abord, n'utilisez pas la Tabclé dans Vim pour une indentation manuelle. Vim dispose d'une paire de commandes en mode insertion pour augmenter ou diminuer manuellement la quantité d'indentation. Ces commandes sont Ctrl-Tet Ctrl-D. Ces commandes respectent les valeurs de
tabstop
,shiftwidth
etexpandtab
, et à maintenir le mélange correct des espaces et des pattes (nombre maximal de languettes suivie d'un nombre quelconque d'espaces nécessaires).Deuxièmement, ces touches de mise en retrait manuelle ne doivent de toute façon pas être très utilisées si vous utilisez la mise en retrait automatique.
Si Ctrl-Tau lieu de Tabvous déranger, vous pouvez le remapper:
Vous pouvez également remapper Shift-Tabpour faire le Ctrl-Ddéindent:
Ici, ^ T et ^ D sont des caractères de contrôle littéraux qui peuvent être insérés en tant que Ctrl-VCtrl-T.
Avec ce mappage en place, vous pouvez toujours taper Tab littéral dans le tampon en utilisant Ctrl-VTab. Notez que si vous faites cela, même s'il
:set expandtab
est activé, vous obtenez un caractère de tabulation non développé.Un effet similaire à la
<Tab>
carte est obtenu à l'aide de:set smarttab
, ce qui entraîne également un retour en arrière intelligent à l'avant d'une ligne.En
smarttab
mode, lorsqu'il Tabn'est pas utilisé en début de ligne, il n'a pas de signification particulière. C'est différent de ma carte ci - dessus Tabà Ctrl-T, parce que Ctrl-Tpartout utilisé dans une ligne (en mode d'insertion) augmentera l'empreinte de cette ligne.D'autres mappages utiles peuvent être:
Maintenant, nous pouvons faire des choses comme sélectionner certaines lignes et appuyer Tabpour les mettre en retrait. Ou appuyez Tabdeux fois sur une ligne (en mode commande) pour augmenter son retrait.
Si vous utilisez les commandes appropriées de gestion de retrait, alors tout est contrôlé par les trois paramètres:
shiftwidth
,tabstop
etexpandtab
.Le
shiftwidth
paramètre contrôle votre taille d'indentation; si vous voulez quatre retraits d'espace, utilisez:set shiftwidth=4
ou l'abréviation:set sw=4
.Si seulement cela est fait, une indentation sera créée en utilisant un mélange d'espaces et de tabulations, car
noexpandtab
c'est la valeur par défaut. Utilisez:set expandtab
. Cela provoque les caractères de tabulation que vous saisissez dans le tampon à se développer dans des espaces et à l'indentation gérée par Vim d'utiliser uniquement des espaces.Quand
expandtab
est activé, et si vous gérez votre indentation à travers tous les mécanismes Vim appropriés, la valeur detabstop
devient non pertinente. Il contrôle l'apparence des onglets s'ils se produisent dans le fichier. Si vous avezset tabstop=8 expandtab
puis glissez un onglet dur dans le fichier en utilisant Ctrl-VTab, cela produira un alignement sur la position de tabulation à 8 colonnes suivante, comme d'habitude.la source
<C-t>
peut utiliser cette syntaxe plutôt que des littéraux. Enfin, le mappage<Tab>
en mode normal mappera également<C-i>
(ce sont le même personnage), donc je ne le recommande pas (vous perdez une fonctionnalité astucieuse de Vim