Correction des fins de ligne Sublime Text 2?


177

Voici ma Settings - Userconfig:

{
    "auto_indent": true,
    "color_scheme": "Packages/Color Scheme - Default/Twilight.tmTheme",
    "default_line_ending": "LF",
    "detect_indentation": true,
    "font_size": 10.0,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_to_bracket": false,
    "smart_indent": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": true,
    "trim_automatic_white_space": true,
    "use_tab_stops": true
}

Le commentaire de l' default_line_endingoption dit: Commentaire sur l'option default_line_ending

Lorsque je crée un nouveau fichier, je coche la ligne se terminant ici:

Vérifier la fin de la ligne

Comme vous pouvez le voir, c'est toujours Windows ... Des idées?


avez-vous essayé de cliquer sur "Unix", de fermer puis de rouvrir?
Preet Kukreti

@PreetKukreti Oui. Après la réouverture, c'est à nouveau "Windows". Cela ne fonctionne que pour le fichier actuel, pas pour le nouveau fichier.
mintobit

1
@ an1zhegorodov avez-vous enregistré le fichier avant? qui a fonctionné pour moi ...
charlysisto

1
Ouais. après avoir enregistré le fichier, cela a fonctionné pour moi aussi.
Pierre Guilbert

Réponses:


199

Le commentaire déclare

// Determines what character(s) are used to terminate each line in new files.
// Valid values are 'system' (whatever the OS uses), 'windows' (CRLF) and
// 'unix' (LF only).

Vous définissez

"default_line_ending": "LF",

Vous devriez définir

"default_line_ending": "unix",


1
J'ai le même problème mais je suis en train de régler correctement "default_line_ending": "unix", je ne sais pas pourquoi ça ne marche pas! Cela me rend fou! J'ai fait des recherches un peu et apparemment, cela n'a pas de solution utile.
acrespo

@acrespo Êtes-vous sûr qu'il n'est pas remplacé par un autre fichier de préférences? Sublime en a beaucoup :) - Si vous avez spécifié un type de ligne se terminant par vos préférences spécifiques à la syntaxe, il remplacera les préférences de l'utilisateur, qui à son tour remplaceront les préférences globales
Leigh

10
réglage "default_line_ending": "unix", fonctionne très bien sur les nouveaux fichiers .. mais pas sur les fichiers existants (anciens). Quelqu'un sait-il comment changer ce comportement?
devin

11
Cela ne peut être fait que manuellement, ce serait vraiment utile si cela était automatisé. Vous pouvez changer cela comme indiqué dans l'image ci-dessus View-> Line Endings-> Unix @soothsayer
A Star

5
@soothsayer, pour les fichiers existants, sélectionnez tout le texte, puis view-> line endings-> unix. Enregistrez ensuite le document.
AGS

9

Le projet EditorConfig ( lien Github ) est une autre solution très viable. Semblable au tri de fichier sftp-config.json et .sublime-project / workspace, une fois que vous avez configuré un fichier .editorconfig, soit dans le dossier du projet, soit dans un dossier parent, chaque fois que vous enregistrez un fichier dans cette structure de répertoires, le plugin sera appliquer automatiquement les paramètres dans le fichier dot et automatiser plusieurs choses différentes pour vous. Certains d'entre eux enregistrent les fins de ligne de style Unix, ajoutent une nouvelle ligne de fin de fichier, suppriment les espaces et ajustent vos paramètres de tabulation / espace de retrait.


EXEMPLE RAPIDE

Installez le plugin EditorConfig dans Sublime en utilisant Package Control; puis placez un fichier nommé  .editorconfigdans un répertoire parent (même votre domicile ou la racine si vous le souhaitez), avec le contenu suivant:

[*]
end_of_line = lf

C'est tout. Ce paramètre appliquera automatiquement les fins de ligne de style Unix chaque fois que vous enregistrez un fichier dans cette structure de répertoires. Vous pouvez faire des trucs plus cool, ex. couper les espaces blancs de fin indésirables ou ajouter une nouvelle ligne à la fin de chaque fichier. Pour plus de détails, reportez-vous au fichier exemple à l' adresse https://github.com/sindresorhus/editorconfig-sublime , c'est-à-dire:

# editorconfig.org
root = true

[*]
indent_style = tab
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

La root = trueligne signifie que EditorConfig ne cherchera pas d'autres .editorconfigfichiers dans les niveaux supérieurs de la structure de répertoires.


Insuffisamment agressif. J'ai besoin du plugin pour identifier la chaîne de personnes qui mènent au fichier ayant crlf et pointer chacune d'elles au visage. Et puis enregistrez-le avec lf.
ArtOfWarfare

Merci, c'était mon problème, j'avais installé ce plugin et il prenait la mauvaise configuration du fichier .config
Luke Robertson

1

pour modifier les fins de ligne de LF à CRLF:

ouvrez Sublime et suivez les étapes: -

1 appuyez sur Ctrl + Maj + p puis installez la ligne de nom du package unifier les fins

puis appuyez à nouveau sur Ctrl + Maj + p

2 dans la zone de saisie vide, tapez "Fin d'unification de ligne"

3 Appuyez deux fois sur Entrée

Sublime peut geler parfois et par conséquent changera les fins de ligne de LF à CRLF


1

Le moyen le plus simple de modifier tous les fichiers d'un projet à la fois (par lots) consiste à utiliser le package Unify des fins de ligne :

  1. Ctrl+ Shift+ Ptapez inst + choisissez Install Package .
  2. Tapez fin de ligne + choisissez Unifier les fins de ligne .
  3. Une fois installé, Ctrl+ Shift+ P+ tapez end + choisissez Line Endings Unify .
  4. OU (au lieu de 3.) copier:

    {
     "keys": ["ctrl+alt+l"],
     "command": "line_endings_unify"
    },
    

    dans le tableau User (volet de droite, après l'ouverture [) dans Préférences -> KeyBindings + appuyez sur Ctrl+ Alt+ L.

Comme mentionné dans une autre réponse :

  • Le caractère Retour chariot ( CR ) ( 0x0D, \r) [...] Anciens systèmes d'exploitation Macintosh (OS-9 et versions antérieures).

  • Le caractère de saut de ligne ( LF ) ( 0x0A, \n) [...] Systèmes UNIX (Linux, Mac OSX)

  • La séquence de fin de ligne ( EOL ) ( 0x0D 0x0A, \r\n) [...] (non-Unix: Windows, Symbian OS).

Si vous avez node_modules , build ou d'autres dossiers générés automatiquement, supprimez-les avant d'exécuter le package.

Lorsque vous exécutez le package:

  1. on vous demande en bas de choisir les extensions de fichiers à rechercher dans une liste séparée par des virgules (tapez les seules dont vous avez besoin pour accélérer les remplacements, par exemple js,jsx).
  2. alors il vous est demandé quelle fin de ligne d'entrée utiliser , par exemple si vous avez besoin du type LF\n .
  3. appuyez sur ENTERet attendez jusqu'à ce que vous voyiez une fenêtre d'alerte avec LineEndingsUnify Complete .
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.