J'apprends Vim mais je pensais que c'était une tâche simple mais je ne peux pas la faire fonctionner. J'ai un navigateur SO mais les solutions ne fonctionnent pas pour moi.
J'essaie d'indenter correctement un fichier (xml). La commande que j'utilise est:
gg=G
ou ggVG = (créé celui-ci moi-même fait probablement quelque chose de différent;))
Mon .vimrc est:
syntax on
filetype plugin indent on
set nu
:set ft? indentexpr?
Est - ce qu'il litfiletype=xml indentexpr=XmlIndentGet(v:lnum,1)
?!m'ggVG=''
, ce qui enregistre simplement la ligne sur laquelle vous vous trouvez et y revient après avoir réindenté le fichier.Réponses:
J'aime la réponse de Berei. Cependant, je pense que ce qui suit est un peu plus flexible dans la mesure où vous n'avez pas à modifier votre
vimrc
fichier. De plus, il est plus facile de formater certaines parties du fichier XML (ce que je fais souvent).Tout d'abord, mettez en surbrillance le XML que vous souhaitez formater.
Puis, en mode normal, tapez
! xmllint --format -
Votre ligne de commande en bas ressemblera à ceci:
:'<,'>!xmllint --format -
Puis appuyez sur Entrée.
Explication technique
Le texte sélectionné est envoyé à la
xmllint
commande, puis--format
'ed, et les résultats dexmllint
sont placés sur votre texte sélectionné dans vim. Le-
à la fin de la commande sert à recevoir une entrée standard - qui, dans ce cas, est le texte sélectionné vers lequel vim envoiexmllint
.la source
:%!xmllint --format -
,%
signifie toute l'étendue de ce fichier xml.apt-cache search
, nonapt-get
, lors de la recherche de packages et de leur contenu.libxml2-utils
contient l'outil manquant.Utilisez un programme externe pour indenter vos
xml
fichiers. Dans ce cas, j'ai choisixmllint
, alors définissez la commande sur l'equalprg
option:Maintenant vous pouvez exécuter
pour laisser
xmllint
formater vosxml
fichiers.Pour l'obtenir à chaque utilisation vigueur, utilisez un
autocommand
pour le définir.autocommand
à partir d'un commentaire ci-dessousla source
au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null
. Source - ku1ik.com/2011/09/08/…libxml2-utils
paquet pour obtenir xmllintUne solution simple que j'aime et qui ne nécessite aucun outil tiers est d'insérer une nouvelle ligne avant chaque balise d'ouverture '<...>'. Ensuite, vous pouvez utiliser l'indentation automatique Vim standard. En bref:
%s/</\r</g
gg=G
pour indenter automatiquementla source
%s/></>\r</g
, pour que chaque élément de texte reste sur la même ligne.%s/> *</>\r</g
Ceci est facile à réaliser une fois que ~ / .vimrc est correctement configuré.
Définissez les options suivantes dans ~ / .vimrc:
Cela vous permet de déplacer le curseur vers le haut du fichier et de le mettre en retrait jusqu'à la fin: gg = G
Vous pouvez également sélectionner le texte souhaité en mode visuel et appuyer sur = pour le mettre en retrait.
la source
.vimrc
au lieu de.bashrc
.Réponse courte: Allumez matchit.vim . Vous pouvez ajouter
packadd matchit
à votre.vimrc
, ou utiliser vim-sensible , qui l'active par défaut.Réponse longue: j'ai essayé de nombreuses stratégies d'auto-indentation XML dans Vim, y compris l' approche xmllint discutée sur le wiki Vim . Le problème avec
xmllint
(et la même approche avec d'autres outils CLI externes tels quexmlformat
ettidy
, aussi) est qu'ils insistent tous pour éliminer les nouvelles lignes vides. Si tout ce que vous voulez est d'indenter votre XML, sans supprimer les lignes vides, les commentaires et / ou tout autre formatage intentionnel, cexmllint
n'est pas le meilleur choix.Il s'avère que la commande equals (=) de Vim prend déjà en charge XML, tant que le script matchit.vim est activé. Un moyen très simple de l'activer est d'adopter le vim-sensible de tpope . Un autre est d'ajouter
packadd matchit
à votre.vimrc
. Ensuite, le formatage XML "fonctionnera" dès la sortie de la boîte.la source
matchit.vim
soit la solution réelle. Vous pouvez l'activer dans votrevimrc
en ajoutant cette ligne:packadd matchit
Dans VIM, j'indente automatiquement le fichier entier (en utilisant des onglets fixes) à l'aide de la commande suivante:
Le
^I
est un personnage unique que vous générez via: CTRL+ v, CTRL+ila source
J'ai eu le même problème. Il s'est avéré que la ligne
dans mon a
.vimrc
causé le problème. Assurez-vous simplement que vous ne l'avez pas.la source
La réponse de Jesse Hogan est bonne, mais je préfère une réponse plus simple:
Pendant que vous êtes dans vim et que votre fichier XML est ouvert, en mode normal, écrivez ceci:
puis appuyez sur Entrée. Tout votre fichier XML sera formaté.
rappelez-vous que vous devriez avoir installé xmllint avant.
la source
pour ceux qui utilise un
coc.nvim
plugin, vous pouvez installercoc-xml
par:CocInstall coc-xml
, puis sur la touche de format mapping dans votre fichier de configuration:nmap <silent> fm <Plug>(coc-format)
. À partir de maintenant, vous pouvez formater non seulement un fichier xml, mais un autre fichier très facilementla source