Correzione delle terminazioni di riga Sublime Text 2?


177

Ecco la mia Settings - Userconfigurazione:

{
    "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
}

Il commento default_line_endingall'opzione dice: Commento all'opzione default_line_ending

Quando creo un nuovo file, controllo la riga che termina qui:

Controlla la fine della linea

Come vedi è ancora Windows ... Qualche idea?


hai provato a fare clic su "Unix", chiudendo e riaprendo?
Preet Kukreti

@PreetKukreti Sì. Dopo la riapertura è di nuovo "Windows". Funziona solo per il file corrente, non per il nuovo file.
mintobit

1
@ an1zhegorodov hai già salvato il file? che ha funzionato per me ...
charlysisto,

1
Si. dopo aver salvato il file ha funzionato anche per me.
Pierre Guilbert,

Risposte:


199

Il commento afferma

// 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).

Stai impostando

"default_line_ending": "LF",

Dovresti impostare

"default_line_ending": "unix",


1
Ho lo stesso problema ma sto impostando correttamente "default_line_ending": "unix", non so perché diavolo non funzioni! Mi sta facendo impazzire! Ho studiato un po 'e apparentemente non ha una soluzione utile.
acrespo,

@acrespo Sei sicuro che non sia sovrascritto da un altro file delle preferenze? Sublime ne ha molti :) - Se hai specificato un tipo di linea che termina nelle tue preferenze specifiche per la sintassi, sostituirà le preferenze degli utenti, che a loro volta prevalgono sulle preferenze globali
Leigh

10
impostazione "default_line_ending": "unix", funziona bene su nuovi file .. ma non su file esistenti (più vecchi). Qualcuno sa come cambiare quel comportamento?
indovino

11
Questo può essere fatto solo manualmente, sarebbe davvero utile se fosse automatizzato. Puoi cambiarlo come si vede nell'immagine sopra Visualizza-> Fine linea-> Unix @soothsayer
A Star

5
@soothsayer, per i file esistenti, seleziona tutto il testo, quindi view-> line endings-> unix. Quindi salva il documento.
AGS,

9

Il progetto EditorConfig ( collegamento Github ) è un'altra soluzione molto praticabile. Simile a sftp-config.json e .sublime-project / workspace sorta di file, una volta impostato un file .editorconfig, nella cartella del progetto o in una cartella principale, ogni volta che si salva un file all'interno di quella struttura di directory il plugin applica automaticamente le impostazioni nel file dot e automatizza alcune cose diverse per te. Alcuni dei quali stanno salvando i finali di linea in stile Unix, aggiungendo la nuova riga di fine file, rimuovendo gli spazi bianchi e regolando le impostazioni della scheda / spazio del rientro.


ESEMPIO RAPIDO

Installa il plug-in EditorConfig in Sublime usando il controllo pacchetto; quindi posizionare un file denominato  .editorconfigin una directory principale (anche a casa o root, se lo si desidera), con il seguente contenuto:

[*]
end_of_line = lf

Questo è tutto. Questa impostazione applica automaticamente i finali di linea in stile Unix ogni volta che si salva un file all'interno di quella struttura di directory. Puoi fare altre cose interessanti, ad es. tagliare gli spazi bianchi finali indesiderati o aggiungere una nuova riga finale alla fine di ogni file. Per maggiori dettagli, consultare il file di esempio su https://github.com/sindresorhus/editorconfig-sublime , ovvero:

# 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 = trueriga indica che EditorConfig non cercherà altri .editorconfigfile nei livelli superiori della struttura delle directory.


Insufficientemente aggressivo. Ho bisogno del plugin per identificare la catena di persone che portano al file con crlf e dare un pugno a ciascuno di loro in faccia. E poi salvalo con lf.
ArtOfWarfare il

Grazie, questo era il mio problema, avevo installato questo plugin e stava prendendo la configurazione errata dal file .config
Luke Robertson,

1

per tagliare le terminazioni di linea da LF a CRLF:

apri Sublime e segui i passaggi: -

1 premi Ctrl + maiusc + p quindi installa la riga del nome del pacchetto unifica i finali

quindi premi di nuovo Ctrl + Maiusc + p

2 nella casella di input vuota digitare "Riga unifica finale"

3 Premi invio due volte

Il sublime può congelarsi a volte e di conseguenza cambierà le terminazioni di linea da LF a CRLF


1

Il modo più semplice per modificare tutti i file di un progetto contemporaneamente (batch) è tramite il pacchetto Unify End Line :

  1. Ctrl+ Shift+ Pdigita inst + scegli Installa pacchetto .
  2. Digita fine riga + seleziona Unisci fine riga .
  3. Una volta installato, Ctrl+ Shift+ P+ digitare end + scegliere Unif . Terminazioni di riga .
  4. OPPURE (anziché 3) copia:

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

    alla User array (riquadro a destra, dopo l'apertura [) in Preferenze -> KeyBindings + premere Ctrl+ Alt+ L.

Come menzionato in un'altra risposta :

  • Il carattere Carriage Return ( CR ) ( 0x0D, \r) [...] Sistemi operativi Macintosh precedenti (OS-9 e precedenti).

  • Il carattere Line Feed ( LF ) ( 0x0A, \n) sistemi [...] basati su UNIX (Linux, Mac OSX)

  • La sequenza di fine linea ( EOL ) ( 0x0D 0x0A, \r\n) [...] (non Unix: Windows, sistema operativo Symbian).

Se si dispone di node_modules , build o altre cartelle generate automaticamente, eliminarle prima di eseguire il pacchetto.

Quando si esegue il pacchetto:

  1. ti viene chiesto in fondo di scegliere quali estensioni di file cercare in un elenco separato da virgole (digita le uniche che ti servono per accelerare le sostituzioni, ad es js,jsx.).
  2. quindi ti viene chiesto quale fine della linea di input utilizzare , ad esempio se hai bisogno del tipo LF\n .
  3. premere ENTERe attendere fino a quando non viene visualizzata una finestra di avviso con LineEndingsUnify Complete .
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.