Désactiver toute indentation automatique dans vim
en TeX vim, je rate habituellement mon indentation. Principalement quand je suis dans une équation affichée qui je pense devrait ressembler à ceci:
[
x=frac{y}{z}
]
où l'espace blanc se trouve devant le x
est l'un onglet.
quand je commence à taper l'équation, je tape [
et ]
marque d'abord et ensuite revenir entre eux, en tapant l'onglet et ensuite le reste de l'équation.
Vim ne fait rien de mal jusqu'à ce que je doive utiliser quelque chose qui incorpore des bagues bouclées (frac{}
par exemple). Quand je tape la fermeture }
vim déplace automatiquement l'indentation pour toute la ligne vers la gauche, ce qui annule mon onglet dactylographié.
C'est très angoissant, Comment puis-je le désactiver?
mon .vimrc
contient:
"indentation
set smartindent
set autoindent
set tabstop=5
set shiftwidth=5
filetype indent on
4 réponses
il semble y avoir un petit mélange de termes dans votre question. Dans vim, le terme indentation automatique indique un type spécial d'indentation qui suit simplement le niveau d'indentation de la ligne précédente (ce qui est assez pratique parfois). Pour le supprimer set noautoindent
à la main, ou à l'écrire dans votre _vimrc.
il y a deux autres types d'indentation automatique, cindent
et smartindent
. De même, si vous souhaitez désactiver aller avec set nocindent
et set nosmartindent
Si vous regardez dans l'aide (help autoindent
,...) ils sont tous assez bien expliqués. Ce que vous préférez (ou ce que vous ne préférez pas) dépend principalement de votre style de programmation et de vos habitudes. Alors, essayez - les et voyez ce que vous aimez le plus.
malheureusement, je n'utilise plus tellement de LaTeX, donc je ne suis pas familiarisé avec ses règles internes d'indentation de type de fichier.
je viens de passer quelques heures à travailler avec javascript, et la conclusion à laquelle j'en suis arrivé est ne pas supprimer filetype indent on
de votre vimrc!
ce paramètre fournit la meilleure indentation intelligente pour plusieurs types de fichiers. Si vous obtenez de mauvais résultats avec ceci, il y a probablement un problème de configuration à portée de main.
Paramètres Des Tirets Spécifiques Aux Fichiers
Donc, si vous êtes comme moi, vous avez probablement eu filetype indent on
dans votre vimrc et n'avait pas de idée de ce qu'il faisait.
Tout ce que ce paramètre fait est de dire à vim de rechercher des fichiers avec des règles indentes spécifiques à filetype. Il y a quelques endroits, mais il n'y en a probablement que deux qui vous intéressent.
$VIMRUNTIME/indent/
~/.vimrc/after/indent/
la première place contient les règles d'indentation par défaut qui viennent avec vim. Si vous définissez filetype indent on
sur une nouvelle installation vim, c'est de là que viendrait toute la smart indenting. Par exemple, lorsque vous ouvrez un fichier appelé index.html
dans les règles de $VIMRUNTIME/indent/html.vim
.
D'après mon expérience, ces règles par défaut sont plutôt bonnes, mais elles peuvent être perturbées par d'autres paramètres.
la deuxième place (la after
directory) permet d'ajouter des paramètres qui remplacent ceux de la première place. C'est sympa parce que vous n'avez pas à éditer les fichiers par défaut pour les personnaliser.
Saveurs de L'Indentation
comme vous l'avez vu, il y a quelques options d'indentation différentes et elles ne sont pas toutes sympas. À partir de la Vim wiki:
indentation automatique
'autoindent' ne fait rien de plus que copier l'indentation de la ligne précédente, lors du démarrage d'une nouvelle ligne. Il peut être utile pour les fichiers texte structurés, ou lorsque vous souhaitez contrôler la plupart de l'indentation manuellement, sans Vim interférents. 'indentation automatique' n'est pas interférer avec d'autres paramètres d'indentation, et certains scripts d'indentation basés sur le type de fichier l'activent même automatiquement.
j'utilise filetype indent on
et set autoindent
dans mon vimrc, puisqu'ils travaillent bien ensemble. Je n'ai pas les autres ensemble.
smartindent & cindent
"smartindent" insère automatiquement un niveau supplémentaire d'indentation dans certains cas, et fonctionne pour les fichiers de type C. 'cindent' est plus personnalisable, mais aussi plus strictes lorsqu'il s'agit pour la syntaxe. "smartindent" et "cindent" peuvent interférer avec l'indentation basée sur le type de fichier, et ne devraient jamais être utilisés en conjonction avec elle.
en ce qui concerne C et C++, les indentations basées sur le type de fichier positionnent automatiquement 'cindent', et pour cette raison, il n'est pas nécessaire de définir 'cindent' manuellement pour de tels fichiers. Dans ces cas, les options "cinwords", "cinkeys" et "cinoptions" s'appliquent toujours.
Généralement, 'smartindent' ou 'cindent' ne doit être définie manuellement si vous n'êtes pas satisfait du fonctionnement de l'indentation basée sur le type de fichier.
indentexpr
exécute les scripts d'indentation filetype trouvés dans (vimfolder)\indent\(indentscripts)
. Il est mentionné dans le documentation vim pour filetype, avec les autres que je viens de mentionner (c'est aussi la cause du problème que j'avais):
Reset "indentation automatique', 'cindent', 'smartindent' et/ou 'indentexpr" pour désactiver la mise en retrait dans un ouvert fichier.
Dépannage
il y a une chance qu'un plugin voyou change les réglages de vos tirets et c'est pourquoi vous obtenez de mauvais résultats. Heureusement verbose
vous indiquera quel fichier a été le dernier à changer l'option en question.
:verbose set autoindent?
:verbose set cindent?
:verbose set smartindent?
:verbose set indentexpr?
Vous pouvez obtenir un résultat tel que
indentexpr=SomeMessedUpValue
Last set from ~/.vim/bundle/some_plugin/indent/plaintex.vim
Si cela se produit, vous pouvez déplacer ce fichier, fermer et ouvrir vim, et voir si cela résout votre problème.
Mise Hors Tension Paramètres pour TeX
peut-être que les valeurs par défaut ne le font tout simplement pas pour vous, et vous voulez désactiver les paramètres d'indentation pour TeX, mais laissez tous les autres types de fichiers tranquilles. Vous pouvez facilement le faire en définissant ces valeurs par défaut dans un fichier after
répertoire.
Je ne sais pas grand chose sur Tex ou LaTex, mais quand j'ai créé un fichier avec le .tex
extension et a couru :filetype
il avait le type du fichier plaintex
. En supposant que ce soit correct, vous voulez créer un fichier, ~/.vim/after/indent/plaintex.vim
. Dans ce fichier:
set autoindent&
set cindent&
set smartindent&
set indentexpr&
cela définira toutes ces valeurs par défaut à chaque fois que vous ouvrez un .tex
fichier.
Supprimer les lignes set autoindent
et set smartindent
pour supprimer toute auto-identification vim.
pour toute autre personne ayant un problème similaire, une solution qui a fonctionné pour moi était:
- Utiliser
:verbose set indentexpr?
pour trouver ce fichier était à l'origine de l'indentation - où Trouver
indentexpr
est changé (pour moi c'étaitsetlocal indentexpr=GetTeXIndent()
) - changez cette ligne en
setlocal indentexpr&
tourindentexpr
ceci a enlevé tout le retrait des crochets, des parenthèses et des accolades.