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
18
demandé sur romeovs 2011-08-14 01:59:31

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.

16
répondu Rook 2017-09-23 11:59:27

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.

  1. $VIMRUNTIME/indent/
  2. ~/.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.

22
répondu Dean 2017-09-29 17:32:58

Supprimer les lignes set autoindent et set smartindent pour supprimer toute auto-identification vim.

2
répondu Jared Ng 2011-08-13 22:02:47

pour toute autre personne ayant un problème similaire, une solution qui a fonctionné pour moi était:

  1. Utiliser :verbose set indentexpr? pour trouver ce fichier était à l'origine de l'indentation
  2. où Trouver indentexpr est changé (pour moi c'était setlocal indentexpr=GetTeXIndent())
  3. changez cette ligne en setlocal indentexpr& tour indentexpr

ceci a enlevé tout le retrait des crochets, des parenthèses et des accolades.

1
répondu AetherUnbound 2016-08-11 00:02:38