J'obtiens des erreurs de 'espaces blancs' en essayant de valider certains fichiers dans git.
Je veux supprimer ces espaces blancs finaux automatiquement juste avant d'enregistrer des fichiers python.
Pouvez-vous configurer vim pour ce faire? Si c'est le cas, comment?
vim
automation
whitespace
removing-whitespace
Paul D. Eden
la source
la source
Réponses:
J'ai trouvé la réponse ici .
L'ajout de ce qui suit à mon fichier .vimrc a fait l'affaire.
la source
e
fin signifie que, si nous n'avons pas trouvé le modèle, vi ne considère pas la commande de substitution comme ayant échouéCompilation de ce qui précède et sauvegarde de la position du curseur:
Si vous souhaitez appliquer cela lors de l'enregistrement à n'importe quel fichier, omettez le second
autocmd
et utilisez un caractère générique*
:la source
autocmd FileType c,cpp,java,php,ruby,python
partie pour qu'elle s'applique à tous les fichiers.<buffer>
par*
si vous voulez qu'il fonctionne sur tous les fichierskeepp
, cela ne modifiera pas votre historique de recherche, c'estkeepp %s/\s\+$//e
J'ai aussi généralement:
dans mon
.vimrc
fichier, afin que les blancs de fin de ligne soient mis en évidence.Todo étant un nom de groupe de syntaxe hilighting utilisé pour les mots clés hilighting comme
TODO
,FIXME
ouXXX
. Il a une couleur de fond jaunâtre ennuyeusement laide, et je trouve que c'est le meilleur pour mettre en évidence les choses que vous ne voulez pas dans votre code :-)la source
:hi Todo
. J'ai donc parcouru:hi <Tab>
et:help hi
. J'ai réfléchiCursor
etError
, mais je pense que je vais essayermatch VisualNOS /\s\+$/
. Je pourrais combiner cela avec certains desautocmd
s d'autres réponses ici.Je souligne à la fois les espaces blancs finaux existants et je dépouille également les espaces blancs finaux.
Je configure mon éditeur (vim) pour afficher un espace blanc à la fin, par exemple
avec ceci au bas de mon .vimrc:
et je le «supprime automatiquement» des fichiers lors de leur enregistrement, dans mon cas * .rb pour les fichiers ruby, à nouveau dans mon ~ / .vimrc
la source
Voici un moyen de filtrer par plus d'un FileType.
la source
Copié et collé depuis http://blog.kamil.dworakowski.name/2009/09/unobtrusive-highlighting-of-trailing.html (le lien ne fonctionne plus, mais le bit dont vous avez besoin est ci-dessous)
"Cela a l'avantage de ne pas mettre en surbrillance chaque espace que vous tapez à la fin de la ligne, uniquement lorsque vous ouvrez un fichier ou quittez le mode d'insertion. Très soigné."
la source
J'ai vu cette solution dans un commentaire à VIM Wikia - Supprimer les espaces indésirables
J'aime vraiment ça. Ajoute un
.
sur les espaces blancs indésirables.Mettez ça dans votre
.vimrc
la source
Voilà comment je le fais. Je ne me souviens pas où je l'ai volé à tbh.
la source
%s
le drapeau global (g) est aussi inutile qu'un espace à EOL :-)Une solution qui supprime simplement les espaces de fin du fichier n'est pas acceptable en toutes circonstances. Cela fonctionnera dans un projet qui a eu cette politique depuis le début, et donc il n'y a pas de tels espaces que vous ne vous êtes pas simplement ajoutés dans votre prochain commit.
Supposons que vous souhaitiez simplement ne pas ajouter de nouvelles instances d'espaces de fin, sans affecter les espaces existants dans les lignes que vous n'avez pas modifiées, afin de garder votre validation exempte de modifications qui ne sont pas pertinentes pour votre travail.
Dans ce cas, avec git, vous pouvez utiliser un script comme celui-ci:
C'est-à-dire que nous cachons les modifications, puis filtrons toutes les
+
lignes dans le diff pour supprimer leurs espaces de fin lorsque nous réappliquons les modifications au répertoire de travail. Si ce canal de commande réussit, nous supprimons la cachette.la source
Les autres approches ici n'ont pas fonctionné pour moi dans MacVim lorsqu'elles sont utilisées dans le
.vimrc
fichier. Voici donc un qui fait et met en évidence les espaces de fin:la source
set listchars=trail:·
disant:E474: Invalid argument: listchars=trail:·
. Pouvez-vous valider votre exemple?autocmd BufWritePre * :%s/\s\+$//<CR>:let @/=''<CR>
la source
Pour les personnes qui souhaitent l'exécuter pour des types de fichiers spécifiques (les FileTypes ne sont pas toujours fiables):
Ou avec vim7:
la source
Si vous coupez des espaces, vous devez seulement le faire sur les fichiers qui sont déjà propres. "Quand à Rome ...". C'est une bonne étiquette lorsque vous travaillez sur des bases de code où des modifications parasites ne sont pas les bienvenues.
Cette fonction détecte les espaces vides et n'active le rognage que s'il était déjà propre.
Le mérite de cette idée revient à un joyau d'un commentaire ici: https://github.com/atom/whitespace/issues/10 (le plus long flux de commentaires de tickets de bogue jamais)
la source
let _s=@/
et le restaurer à la fin `let @ / = _ s`. Dans ce cas, nous utilisons le registre de trou noir