web-dev-qa-db-fra.com

Comment faire pour supprimer automatiquement les espaces blancs de fin dans Eclipse?

La question comporte deux parties, dont l’une a déjà ma réponse.

  1. Comment faire pour supprimer automatiquement les espaces finaux du fichier entier en cours de modification ? -> Réponse: utilisez le plug-in AnyEdit , qui peut être configuré pour le faire lors de tout enregistrement dans le fichier.
  2. Comment supprimer automatiquement les espaces finaux uniquement des lignes que j'ai modifiées ? -> Cela, je ne le sais pas et j'apprécierais toute aide.
409
Jan Żankowski
  1. Suppression des espaces de l’ensemble du fichier en cours de modification :

Preferences -> Java -> Editors -> Save Actions -> vérifier Perform the selected actions on save -> vérifier Additional actions -> cliquez Configure.. -> aller à Code organizing onglet -> vérifier Remove trailing whitespace -> sélectionner All lines.

  1. Supprimer les espaces uniquement des lignes que j'ai modifiées :

Preferences -> Java -> Editor -> Save Actions -> chèque "Perform the selected actions on save -> vérifier Format source code -> sélectionner Format edited lines.

Notez qu'il n'est pas nécessaire de cliquer Configure the formatter settings on the Formatter page - tous les styles de code incluent automatiquement la suppression des espaces finaux. Au moins, je n'ai pas trouvé de paramètre pour cela dans la configuration de Formatter, et cela fonctionne immédiatement pour les conventions intégrées Java Conventions, Eclipse, Eclipse 2.1 ainsi que GoogleStyle .

Lorsque vous utilisez cette configuration, vous devez évidemment également désactiver la solution à la partie 1 de la question.

Eclipse version checked: 4.5.2
129
Dan Berindei

Je suppose que vos questions portent sur le code Java. Si c'est le cas, vous n'avez pas besoin de plugins supplémentaires pour accomplir 1). Vous pouvez simplement aller à Préférences -> Java -> Éditeur -> Actions de sauvegarde et le configurer pour supprimer les espaces finaux.

Par le son de cette chanson, vous souhaitez également créer un environnement d’équipe, non? Pour vous simplifier la vie et éviter de vous rappeler de la configurer chaque fois que vous créez un nouvel espace de travail, vous pouvez définir l'action de sauvegarde comme préférence préférentielle propre au projet, qui est stockée dans votre GDS avec le code.

Pour ce faire, cliquez avec le bouton droit de la souris sur votre projet et allez dans Propriétés -> Java éditeur -> Enregistrer les actions. À partir de là, vous pouvez activer les paramètres spécifiques au projet et le configurer pour supprimer les espaces blancs de fin (entre autres choses utiles).

NB: Cette option a été supprimée dans Eclipse Kepler (4.3) et les versions suivantes.

NB # 2: L'option semble être de retour dans Eclipse Luna - Luna Service Release 1a (4.4.1)

347
gcastro

Vous n'avez besoin d'aucun plugin pour le faire. Par exemple, si vous code Java, vous pouvez effacer les espaces finaux en configurant les actions de sauvegarde:

Eclipse 3.6

Preferences -> Java -> Editors -> Save Actions -> Vérifier Perform the selected actions on save -> Vérifier Additional actions -> Cliquez sur le Configure.. bouton.

Dans le Code organizing onglet, vérifier Remove trailing whitespace

72
Dave

PyDev peut le faire soit Ctrl+Shift+F si vous avez l'option de formateur de code configurée pour le faire, ou par during saving:

Eclipse -> Window -> Preferences -> PyDev -> Editor -> Code Style -> Code Formatter:

J'utilise au moins ces:

  • Formater automatiquement avant de sauvegarder
  • Lignes de coupe droites?
  • Ajouter une nouvelle ligne à la fin du fichier
46
Ciantic

Faire ce qui suit:

Preferences -> Java -> Editor -> Save Actions

enter image description here

35
Sumit Singh

Vous pouvez mapper une clé dans Eclipse pour supprimer manuellement les espaces blancs de fin dans l'ensemble du fichier, mais uniquement sur demande et non automatiquement lors de la sauvegarde. (Préférence/Clés, puis mappez un jeu de clés sur Fichier/Supprimer les espaces finaux). Cela peut être utile si vous souhaitez effacer tous les nouveaux fichiers, tout en conservant le code hérité.

Une autre stratégie consiste à activer l'affichage visuel des espaces afin qu'au moins vous sachiez lorsque vous ajoutez des espaces à la fin. Autant que je sache, il n’existe aucun moyen d’afficher uniquement les espaces, mais je serai heureux d’avoir tort.

19
Kena

À la rigueur, pour les éditeurs qui ne prennent pas en charge la suppression des espaces finaux (par exemple, l'éditeur XML), vous pouvez le supprimer de toutes les lignes en effectuant une recherche et un remplacement, en activant les expressions régulières, puis en recherchant "[\ t] + $ "et en le remplaçant par" "(vide). Il y a probablement une meilleure regex à faire cela, mais cela fonctionne pour moi sans avoir besoin d'installer AnyEdit.

10
Malvineous

Il est impossible de le faire dans Eclipse de manière générique pour le moment, , mais cela peut être modifié avec les connaissances de base de Java et du temps libre pour ajouter un support de base pour cette opération https://bugs.Eclipse.org/bugs/show_bug.cgi?id=180349

Le problème dépendant: https://bugs.Eclipse.org/bugs/show_bug.cgi?id=31117

8
anatoly techtonik

Je dirais aussi AnyEdit. Il ne fournit pas ces fonctionnalités spécifiques. Cependant, si vous et votre équipe utilisez les fonctionnalités d'AnyEdit à chaque action de sauvegarde, alors, lorsque vous ouvrez un fichier, celui-ci ne doit comporter aucun espace de fin.

Ainsi, si vous modifiez ce fichier et si vous ajoutez de nouveaux espaces de fin, lors de l'opération de sauvegarde, AnyEdit ne supprimera que ces nouveaux espaces, car ce sont les seuls espaces de fin de fichier.

Si, pour certaines raisons, vous devez conserver les espaces de fin de ligne sur les lignes qui ont été non modifiées par vous, alors je n'ai pas de réponse pour vous et je ne suis pas sûr que ce type de fonctionnalité existe dans aucun Plugin Eclipse ...

8
Romain Linsolas

Pour php il y a aussi une option:enter image description here

5
HeyMan

Il existe un moyen très simple de faire cela avec sed, l'outil de ligne de commande Unix. Vous pourriez probablement créer une macro dans Eclipse pour exécuter ceci:

sed -i 's/[[:space:]]*$//' <filename>
4
jcoffland

Comme @Malvineous l'a dit, l'utilisation de la méthode Rechercher/Remplacer pour supprimer les espaces de fin (ce qui concerne l'onglet U + 0009 et les espaces blancs U + 0020) n'est pas professionnelle, mais constitue une solution de rechange.
Appuyez simplement sur Ctrl + F (ou commande + F)

  1. Trouver[\t ][\t ]*$
  2. Remplacer par chaîne vide
  3. Utilisez expressions régulières
  4. Remplacer tout

extra:
Pour supprimer l’espace de début, recherchez ^[\t ][\t ]* au lieu de [\t ][\t ]*$.
Pour supprimer les lignes vides, trouvez ^\s*$\r?\n

3
fuweichin

Je ne suis au courant d'aucune solution pour la deuxième partie de votre question. La raison en est qu'il n'est pas clair comment définir j'ai changé. Changé quand? Juste entre 2 sauvegardes ou entre commits ... En gros, oubliez ça.

Je suppose que vous aimeriez vous en tenir à certaines directives, mais ne touchez pas le reste du code. Mais la directive devrait être utilisée dans son ensemble, et non pour les piqûres. Donc, ma suggestion est - changer tout le code à la ligne directrice: c'est une opération unique, mais assurez-vous que tous vos développeurs ont le même plugin (AnyEdit) avec les mêmes paramètres pour le projet.

1
van

J'ai utilisé cette commande pour git: git config --global core.whitespace cr-at-eol

Il supprime ^M caractères qui sont en fin.

1
user7577563