¿Arreglando las terminaciones de línea de Sublime Text 2?

177

Aquí está mi Settings - Userconfiguración:

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

Comentario a la default_line_endingopción dice: Comentario a la opción default_line_ending

Cuando creo un nuevo archivo, verifico la línea que termina aquí:

Comprobar final de línea

Como puede ver, sigue siendo Windows ... ¿Alguna idea?

mintobit
fuente
¿Has intentado hacer clic en "Unix", cerrar y volver a abrir?
Salude a Kukreti el
@PreetKukreti Sí. Después de volver a abrir, vuelve a ser "Windows". Solo funciona para el archivo actual, no para el nuevo archivo.
mintobit
1
@ an1zhegorodov ¿guardó el archivo antes? eso funcionó para mí ...
charlysisto
1
Si. después de guardar el archivo funcionó para mí también.
Pierre Guilbert

Respuestas:

199

El comentario dice

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

Estás configurando

"default_line_ending": "LF",

Deberías configurar

"default_line_ending": "unix",

Leigh
fuente
1
Tengo el mismo problema pero estoy configurando correctamente "default_line_ending": "unix", ¡no sé por qué demonios eso no funciona! Me está volviendo loco! He investigado un poco y aparentemente no tiene una solución útil.
acrespo
@acrespo ¿Estás seguro de que no está siendo anulado por otro archivo de preferencias? Sublime tiene muchos :): si ha especificado un tipo de línea que termina en sus preferencias específicas de sintaxis, anulará las preferencias de los usuarios, lo que a su vez anulará las preferencias globales
Leigh
10
establecer "default_line_ending": "unix", funciona bien en archivos nuevos ... pero no en archivos existentes (más antiguos). ¿Alguien sabe cómo cambiar ese comportamiento?
adivino
11
Esto solo se puede hacer manualmente, sería realmente útil si esto se automatizara. Puede cambiar esto como se ve en la imagen de arriba Ver-> Line Endings-> Unix @soothsayer
A Star
55
@soothsayer, para archivos existentes, seleccione todo el texto, luego view-> line endings-> unix. Luego guarde el documento.
AGS
9

El proyecto EditorConfig ( enlace Github ) es otra solución muy viable. Similar al tipo de archivo sftp-config.json y .sublime-project / workspace, una vez que configura un archivo .editorconfig, ya sea en la carpeta del proyecto o en una carpeta principal, cada vez que guarde un archivo dentro de esa estructura de directorios, el complemento se ejecutará aplique automáticamente la configuración en el archivo de puntos y automatice algunas cosas diferentes para usted. Algunos de los cuales están guardando terminaciones de línea de estilo Unix, agregando nueva línea al final del archivo, eliminando espacios en blanco y ajustando la configuración de la pestaña / espacio de sangría.


EJEMPLO RAPIDO

Instale el complemento EditorConfig en Sublime usando Package Control; luego coloque un archivo nombrado  .editorconfigen un directorio padre (incluso su hogar o la raíz si lo desea), con el siguiente contenido:

[*]
end_of_line = lf

Eso es. Esta configuración aplicará automáticamente las terminaciones de línea de estilo Unix cada vez que guarde un archivo dentro de esa estructura de directorios. Puedes hacer más cosas geniales, ej. recorte los espacios en blanco finales no deseados o agregue una nueva línea al final de cada archivo. Para obtener más detalles, consulte el archivo de ejemplo en https://github.com/sindresorhus/editorconfig-sublime , es decir:

# 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 = truelínea significa que EditorConfig no buscará otros .editorconfigarchivos en los niveles superiores de la estructura del directorio.

Nathan C.
fuente
Insuficientemente agresivo. Necesito el complemento para identificar la cadena de personas que llevan al archivo a tener crlf y golpear a cada uno de ellos en la cara. Y luego guárdelo con lf.
ArtOfWarfare
Gracias, este era mi problema, había instalado este complemento y estaba tomando la configuración incorrecta del archivo .config
Luke Robertson
1

para terminar las terminaciones de línea de LF a CRLF:

abra Sublime y siga los pasos:

1 presione Ctrl + shift + p luego instale la línea del nombre del paquete unifique las terminaciones

luego nuevamente presione Ctrl + shift + p

2 en el cuadro de entrada en blanco, escriba "Línea unificar final"

3 Pulsa enter dos veces

Lo sublime puede congelarse algunas veces y, como resultado, cambiará las terminaciones de línea de LF a CRLF

Parth Sharma
fuente
1

La forma más sencilla de modificar todos los archivos de un proyecto a la vez (lote) es a través del paquete Unificación de terminaciones de línea :

  1. Ctrl+ Shift+ Pescriba inst + elija Instalar paquete .
  2. Escriba line end + elija Line Endings Unify .
  3. Una vez instalado, Ctrl+ Shift+ P+ escriba end + elija Line Endings Unify .
  4. O (en lugar de 3.) copia:

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

    a la matriz de usuario (panel derecho, después de la apertura [) en Preferencias -> Teclas vinculadas + presione Ctrl+ Alt+ L.

Como se menciona en otra respuesta :

  • El carácter de retorno de carro ( CR ) ( 0x0D, \r) [...] primeros sistemas operativos Macintosh (OS-9 y versiones anteriores).

  • El carácter de avance de línea ( LF ) ( 0x0A, \n) [...] sistemas basados ​​en UNIX (Linux, Mac OSX)

  • La secuencia de fin de línea ( EOL ) ( 0x0D 0x0A, \r\n) [...] (no Unix: Windows, sistema operativo Symbian).

Si tiene node_modules , build u otras carpetas autogeneradas, elimínelas antes de ejecutar el paquete.

Cuando ejecutas el paquete:

  1. en la parte inferior se le pide que elija qué extensiones de archivo buscar a través de una lista separada por comas (escriba las únicas que necesita para acelerar los reemplazos, por ejemplo js,jsx).
  2. entonces se le pregunta qué línea de entrada termina para usar , por ejemplo, si necesita el tipo LF\n .
  3. presione ENTERy espere hasta que vea una ventana de alerta con LineEndingsUnify Complete .
CPHPython
fuente