Vim tiret fichier xml
Je suis en train d'apprendre Vim, mais je pensais que c'était une tâche simple, mais je ne peux pas le faire fonctionner. J'ai navigateur de manière à ce mais les solutions ne sont pas de travail pour moi.
Je suis en train de correctement tiret un fichier (xml). La commande que j'utilise est:
gg=G
ou
ggVG= (fait moi-même probablement fait quelque chose de différent ;))
Mon .vimrc est:
syntax on
filetype plugin indent on
set nu
- Ce qui est l'original, le résultat et la sortie attendue?
- Quel est le résultat de
:set ft? indentexpr?
T-il lirefiletype=xml indentexpr=XmlIndentGet(v:lnum,1)
?! - filetype=xml indentexpr=XmlIndentGet(v:lnum,1). Yup
- Voir stackoverflow.com/questions/11655383/...
- Je tiens à ajouter juste un peu de cette carte et de faire
m'ggVG=''
, qui enregistre simplement la ligne, que vous êtes sur et se déplace en arrière après reindenting le fichier.
Vous devez vous connecter pour publier un commentaire.
J'aime Berei de réponse. Cependant, je pense que la suite est un peu plus souple dans la mesure où vous n'avez pas à modifier votre
vimrc
fichier. De Plus il est plus facile de format de sélectionner des parties d'un fichier XML (quelque chose que j'arrive à faire beaucoup).D'abord, mettez en surbrillance le XML que vous souhaitez formater.
Puis, en mode normal, type
! xmllint --format -
Votre ligne de commande au bas de la page ressemble à ceci:
:'<,'>!xmllint --format -
Puis appuyez sur entrée.
Explication Technique
Le texte sélectionné est envoyé à l'
xmllint
de la commande, puis--format
'ed, et les résultats dexmllint
sont placés au-dessus de votre texte sélectionné dans vim. Le-
à la fin de la commande pour la réception de l'entrée standard qui, dans ce cas, est le texte sélectionné vim envoie àxmllint
.:%!xmllint --format -
,%
signifie que l'ensemble du champ d'application de ce fichier xml.apt-cache search
, pasapt-get
, lors de la recherche de paquets et contenu de l'emballage.libxml2-utils
contient le manque de l'outil.nmap <leader>X ggVG !xmllint --format -<CR>
:'<,'>!xmllint --format - | highlight --out-format=ansi --syntax=xml
si vous n'avez pas la mettre en surbrillance, puis l'installer comme ceci :sudo apt install -yq highlight
Utiliser un programme externe pour le retrait de votre
xml
fichiers. Dans ce cas, j'ai choisixmllint
, de sorte que la commande de laequalprg
option:Maintenant, vous pouvez exécuter
laisser
xmllint
format de votrexml
fichiers.Pour l'obtenir à chaque fois que vous utilisez vim, utilisez un
autocommand
pour le régler.autocommand
à partir d'un commentaire ci-dessousau 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 qui ne nécessite aucun outil 3ème partie consiste à insérer un saut de ligne avant chaque ouverture de la balise " <...>'. Ensuite, vous pouvez utiliser le standard vim auto-indentation. En bref:
%s/</\r</g
gg=G
à retrait automatique%s/></>\r</g
, de sorte que chaque élément de texte reste sur la même ligne.%s/> *</>\r</g
Réponse courte: Tour sur matchit.vim. Vous pouvez ajouter
packadd matchit
à votre.vimrc
, ou de l'utilisation vim-sensible, ce qui lui permet par défaut.Réponse longue: j'ai essayé de nombreuses stratégies d'auto-tiret XML dans Vim, y compris la xmllint approche discuté sur le Vim wiki. Le problème avec
xmllint
(et la même approche avec d'autres outils CLI commexmlformat
ettidy
, trop), c'est qu'ils tous insistent sur évincer vide retours à la ligne. Si tout ce que vous voulez est pour le retrait de votre XML, sans supprimer les lignes vides, des commentaires et/ou intentionnel de la mise en forme, puisxmllint
n'est pas le meilleur choix.Il s'avère que Vim est égal à (=) commande prend déjà en charge XML, aussi longtemps que le matchit.vim script est activé. Un moyen super facile à activer, c'est l'adopter tpope de vim-sensible. Une autre consiste à ajouter
packadd matchit
à votre.vimrc
. Ensuite, la mise en forme XML "tout le travail" hors de la boîte.matchit.vim
est la solution réelle. Vous pouvez l'activer dans votrevimrc
en ajoutant cette ligne:packadd matchit
C'est facile à réaliser une fois que ~/.vimrc est correctement installé.
Définissez les options suivantes dans ~/.vimrc:
Cela vous permet de déplacer le curseur vers le haut du fichier et le tiret à la fin: gg=G
Vous pouvez également sélectionner le texte de votre choix avec le mode visuel et hit = pour indenter.
.vimrc
au lieu de.bashrc
.Dans VIM, j'ai auto-indentation, l'ensemble du fichier (à l'aide de dur onglets) à l'aide de la commande suivante:
La
^I
est un caractère unique vous générer via: CTRL+v,CTRL+iJ'ai eu le même problème. Il s'est avéré, que la ligne
dans mon
.vimrc
causé le problème. Assurez-vous, vous ne l'avez pas.