119 votes

Sublime Text 2 : coupe les espaces blancs à la demande

Je sais que Sublime Text 2 peut supprimer les espaces blancs de fin de fichier lors de l'enregistrement.

Lorsque l'on travaille en équipe et que l'on commet un changement dans un fichier, cela a tendance à produire d'énormes différences qui rendent la révision du code par les pairs plus difficile. C'est pourquoi je préfère ne nettoyer les espaces blancs que lorsque j'apporte des modifications importantes à un fichier et laisser les espaces blancs tels quels pour les modifications mineures.

J'aimerais savoir s'il existe une commande permettant de couper les espaces blancs. sur demande sur un fichier, autre que "Activate trimming on save > Save file > Deactivate trimming" .

La recherche dans la documentation et sur stackoverflow n'a rien donné de pertinent, tous les liens semblent parler de l'ajustement automatique à la sauvegarde.

1 votes

Cela ne répond pas directement à votre question, mais cela peut vous aider si vous utilisez Git pour le contrôle de version : $ mv .git/hooks/pre-commit.sample .git/hooks/pre-commit que j'ai obtenu de ce blog .

106 votes

Pour les collègues de Googlers : la manière non-demande est d'ajouter ce paramètre : "trim_trailing_white_space_on_save": true

3 votes

Pour compléter le commentaire de @Nate Glenn, notez que le fait de couper les espaces blancs du format Markdown peut vous attirer des ennuis, surtout si vous coupez les espaces blancs intentionnels de quelqu'un d'autre et que vous le faites sans vous en rendre compte. Vous pouvez éditer Markdown.sublime-settings et désactiver le trim global sur la sauvegarde et éviter les mésaventures.

87voto

Jason Favors Points 291

J'utilise ces étapes pour une solution rapide à la demande dans Sublime Text :

  1. Rechercher > Remplacer...
  2. Trouvez quoi : [ \t]+\n
  3. Remplacer par : \n
  4. Remplacer tout

Vous pouvez également le faire pour un grand nombre de fichiers via

  1. Rechercher > Rechercher dans les fichiers...
  2. Trouvez : [ \t]+\n
  3. Où :
  4. Remplacer : \n
  5. Remplacer

5 votes

Cette méthode fonctionne pour toutes les lignes sauf la dernière.

1 votes

@Joncom a raison à propos de la dernière ligne. Dans Sublime Text 3, \t ne semble pas correspondre aux espaces, donc la réponse telle qu'elle est écrite ne supprime que les tabulations de fin de ligne. Je pense que je préfère \s+\n mais notez qu'il supprime également les lignes vides. Si vous voulez aussi supprimer les espaces sur la dernière ligne, vous pouvez ajouter \s+\z comme ça : (\s+\n|\s+\z) .

3 votes

([\t ]+\n|\s+\z) <-- ne supprime pas les lignes vides.

76voto

Sridhar Katakam Points 721

Attention : l'utilisation de ce plugin rend Sublime Text significativement plus lent

J'utilise Espaces de fin de ligne plugin pour cela.

Mettez en évidence les espaces de fin de ligne et supprimez-les en un clin d'œil.

ST2 permet de supprimer automatiquement les espaces de fin de ligne lors de l'enregistrement d'un fichier. fichier. Selon vos paramètres, il peut être plus pratique de les mettre en évidence et/ou de les supprimer manuellement. les mettre en évidence et/ou les supprimer à la main. Ce plugin permet justement cela !

Utilisation : cliquez sur "Editer / Espaces de fin de ligne / Supprimer".

Pour ajouter une combinaison de touches, ouvrez "Préférences / Combinaisons de touches - Utilisateur" et ajoutez :

{ "keys": ["ctrl+alt+t"], "command": "delete_trailing_spaces" }

1 votes

Oui, je préfère cette réponse... mise à jour sûre + fonctionne tout simplement - merci.

1 votes

J'ai remarqué que la fonction ctrl + F pour trouver des mots devient lente après avoir installé ce plugin donc je l'ai supprimé, pouvez-vous me dire si la même situation vous arrive ?

0 votes

Ctrl + Shift + T est utilisé pour ouvrir le dernier onglet fermé dans Sublime déjà. Donc je préfère Ctrl + Alt + T

49voto

antou Points 558

Vous pouvez simplement utiliser une expression rationnelle pour supprimer les espaces de fin de ligne :

  1. Rechercher > Remplacer...
  2. Trouvez quoi : [^\S\r\n]+$
  3. Remplacer par : laisser vide.
  4. Cliquez sur "Remplacer tout".

[^\S\r\n]+$ es Regex pour "au moins un caractère d'espacement (donc les espaces et les tabulations mais pas les nouvelles lignes, en utilisant une double négation) suivi de la fin de la ligne".

L'expression régulière doit être activée : Enable regex is search dialog

23voto

shaneveeg Points 682

Cette méthode n'est pas parfaite, mais elle n'utilise aucun plugin ou paramètre et fonctionne dans la plupart des situations.

  1. Multi-Sélectionner et déplacer le curseur à la fin de chaque ligne
  2. Maintenez CTRL-Shift, appuyez sur la gauche et la droite.
  3. Les espaces et les tabulations à la fin des lignes devraient maintenant être sélectionnés. Appuyez sur la touche Delete ou Backspace

Note - À ce stade, les caractères spéciaux tels que ( et + peuvent également être sélectionnés en fin de ligne, et pas seulement les espaces.

Comment multi-sélectionner toutes les lignes :

Une façon de procéder est d'utiliser la touche centrale de la souris pour sélectionner verticalement, puis d'appuyer sur la touche Fin s'il s'agit d'une petite sélection.

Avec des touches de raccourci :

  1. CTRL-A (tout sélectionner)
  2. CTRL-SHIFT-L (place le curseur sur toutes les lignes sélectionnées)
  3. END (Aller à la fin des lignes)

Vous pouvez également utiliser la fonction find pour trouver un élément qui sera présent sur chaque ligne, comme le caractère espace :

  1. \s (utilisation de regex)
  2. Cliquez sur Rechercher tout
  3. Appuyez sur la touche "End" pour obtenir des curseurs multiples à la fin de chaque ligne.

Texte type :

text and number     44  more text and a space  
text and number 44  more text and 2 tabs        
text and number 44  more text and no space or tab

text and number 44  more text after a line feed

2 votes

Note : Pour mettre en évidence toutes les lignes avec le multi-curseur dans la dernière position, vous pouvez utiliser CTRL+A suivi de CTRL+SHIFT+L suivi de END.

2 votes

En utilisant cette technique sur d'autres ensembles de données, j'ai constaté qu'elle n'est pas parfaite. Sublime Text met également en évidence les caractères spéciaux tels que ) et + ainsi que les espaces de fin de ligne. Faites attention si certaines des données se terminent par des caractères spéciaux.

2 votes

Aussi, FYI \s dans les regex ne correspond pas seulement au caractère espace, mais aussi aux tabulations et aux nouvelles lignes (c'est-à-dire aux "espaces blancs") et pas seulement aux espaces :)

14voto

Riccardo Marotti Points 8603

J'ai trouvé une solution ici : http://www.sublimetext.com/forum/viewtopic.php?f=4&t=4958

Vous pouvez modifier le paquet

trim_trailing_white_space.py

situé dans le répertoire des paquets par défaut, de cette façon :

import sublime, sublime_plugin

def trim_trailing_white_space(view):
    trailing_white_space = view.find_all("[\t ]+$")
    trailing_white_space.reverse()
    edit = view.begin_edit()
    for r in trailing_white_space:
        view.erase(edit, r)
    view.end_edit(edit)

class TrimTrailingWhiteSpaceCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        trim_trailing_white_space(self.view)

class TrimTrailingWhiteSpace(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("trim_trailing_white_space_on_save") == True:
            trim_trailing_white_space(view)

class EnsureNewlineAtEof(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("ensure_newline_at_eof_on_save") == True:
            if view.size() > 0 and view.substr(view.size() - 1) != '\n':
                edit = view.begin_edit()
                view.insert(edit, view.size(), "\n")
                view.end_edit(edit)

Vous pouvez maintenant ajouter la commande à la configuration de votre keymap :

{ "keys": ["your_shortcut"], "command": "trim_trailing_white_space" }

0 votes

La meilleure solution pour moi, je ne veux pas ajouter un plugin pour simplement faire cela. Merci.

0 votes

Pour moi, c'est la solution parfaite, merci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X