web-dev-qa-db-fra.com

Sublime Text 2: Taille des espaces à la demande

Je sais que Sublime Text 2 peut supprimer l’espace blanc de fin sur les fichiers lors de la sauvegarde.

Lorsque vous travaillez en équipe et que vous apportez une modification à un fichier, cela a tendance à produire d'énormes différences qui rendent la révision de code par les pairs plus lourde. Pour cette raison, je préfère ne nettoyer que les espaces lorsque je commets de toute façon de gros changements sur un fichier et laisser les espaces tels quels pour les changements mineurs.

Je voudrais savoir s'il existe une commande pour exécuter le rognage de l'espace blanc à la demande sur un fichier, autre que "Activate trimming on save > Save file > Deactivate trimming".

Les recherches dans la documentation et sur stackoverflow ne montrent rien de pertinent, tous les liens semblent parler de la réduction automatique lors de la sauvegarde.

91
José Luis

Attention: utiliser ce plugin rend Sublime Text beaucoup plus lent

J'utilise le plugin TrailingSpaces pour cela.

Mettez en surbrillance les espaces de fin et supprimez-les en un éclair.

ST2 fournit un moyen de supprimer automatiquement les espaces de fin lors de la sauvegarde du fichier. Selon vos paramètres, il peut être plus pratique de simplement les surligner et/ou de les supprimer à la main. Ce plugin fournit justement ça!

Utilisation: cliquez sur "Éditer/espaces de fin/Supprimer".

Pour ajouter une liaison de clé, ouvrez "Préférences/Liaisons de clés - Utilisateur" et ajoutez:

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

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

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

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

  1. Rechercher> Rechercher dans les fichiers ...
  2. Trouver: [ \t]+\n
  3. Où:
  4. Remplacez: \n
  5. Remplacer
61
Jason Favors

Vous pouvez simplement utiliser une expression régulière pour supprimer les espaces finaux:

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

[^\S\r\n]+$ est une expression rationnelle pour "au moins un caractère d'espacement (donc des espaces et des tabulations mais pas des 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

23
antou

Voici un moyen très simple qui n'utilise aucun plugin ou paramètre et fonctionne dans la plupart des situations.

  1. Sélection multiple et déplacement du curseur à la fin de chaque ligne
  2. Maintenez CTRL-Shift, appuyez sur Gauche, Droite
  3. Les espaces et les onglets à la fin des lignes doivent maintenant être sélectionnés. Appuyez sur Supprimer ou sur Retour arrière

    Remarque - Les caractères spéciaux tels que (et + peuvent également être sélectionnés à la fin de la ligne à ce stade, pas uniquement des espaces.

Comment sélectionner plusieurs fois toutes les lignes:

Une solution consiste à utiliser la touche centrale de la souris pour sélectionner verticalement, puis à appuyer sur la touche de fin s'il s'agit d'une petite sélection.

Avec les raccourcis:

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

Vous pouvez également utiliser la fonction de recherche pour trouver quelque chose qui sera dans chaque ligne, comme le caractère d'espace:

  1. \ s (en utilisant regex)
  2. Cliquez sur Rechercher tout
  3. Appuyez sur la touche "Fin" pour obtenir plusieurs curseurs à la fin de chaque ligne

Exemple de texte:

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
20
shanemgrey

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

Vous pouvez modifier le package

trim_trailing_white_space.py

situé dans le répertoire packages 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)

Maintenant, vous pouvez ajouter la commande à la configuration de votre keymap:

{ "keys": ["your_shortcut"], "command": "trim_trailing_white_space" }
13
Riccardo Marotti