Memperbaiki akhir baris Teks Luhur 2?

177

Ini Settings - Userkonfigurasi saya :

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

Komentar untuk default_line_endingopsi mengatakan: Komentar ke opsi default_line_ending

Ketika saya membuat file baru, saya memeriksa baris yang berakhir di sini:

Periksa akhir baris

Seperti yang Anda lihat itu masih Windows ... Ada ide?

mintobit
sumber
sudahkah Anda mencoba mengklik "Unix", menutup dan kemudian membuka kembali?
Preet Kukreti
@PreetKukreti Ya. Setelah membuka kembali itu "Windows" lagi. Ini hanya berfungsi untuk file saat ini, bukan file baru.
mintobit
1
@ an1zhegorodov apakah Anda menyimpan file sebelumnya? yang bekerja untuk saya ...
charlysisto
1
Ya. setelah menyimpan file itu berhasil juga untuk saya.
Pierre Guilbert

Jawaban:

199

Komentar menyatakan

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

Anda sedang mengatur

"default_line_ending": "LF",

Anda harus mengatur

"default_line_ending": "unix",

Leigh
sumber
1
Saya memiliki masalah yang sama tetapi saya mengatur dengan benar "default_line_ending": "unix", saya tidak tahu mengapa itu tidak berhasil! Ini membuatku gila! Saya sudah meneliti sedikit dan ternyata tidak memiliki perbaikan yang berguna.
acrespo
@acrespo Anda yakin tidak ditimpa oleh file preferensi lain? Sublime memiliki banyak dari mereka :) - Jika Anda telah menentukan satu jenis baris yang berakhir dengan prefs spesifik sintaks Anda, itu akan mengesampingkan prefs pengguna, yang pada gilirannya mengesampingkan prefs global
Leigh
10
pengaturan "default_line_ending": "unix", berfungsi dengan baik pada file baru .. tetapi tidak pada file yang ada (lebih lama). Adakah yang tahu cara mengubah perilaku itu?
peramal
11
Ini hanya dapat dilakukan secara manual, akan sangat membantu jika ini otomatis. Anda dapat mengubah ini seperti terlihat pada gambar di atas View-> Line Endings-> Unix @soothsayer
A Star
5
@ soothsayer, untuk file yang ada, pilih semua teks, lalu view-> line endings-> unix. Kemudian simpan dokumen tersebut.
AGS
9

Proyek EditorConfig ( tautan Github ) adalah solusi lain yang sangat memungkinkan. Mirip dengan sftp-config.json dan .sublime-project / workspace semacam file, setelah Anda mengatur file .editorconfig, baik dalam folder proyek atau dalam folder induk, setiap kali Anda menyimpan file dalam struktur direktori itu plugin akan secara otomatis menerapkan pengaturan dalam file dot dan mengotomatiskan beberapa hal berbeda untuk Anda. Beberapa di antaranya menyimpan akhiran gaya Unix, menambahkan baris baru di akhir file, menghapus spasi, dan menyesuaikan pengaturan indentasi tab / ruang Anda.


CONTOH CEPAT

Instal plugin EditorConfig di Sublime menggunakan Kontrol Paket; lalu letakkan file yang bernama  .editorconfigdi direktori induk (bahkan rumah Anda atau root jika Anda suka), dengan konten berikut:

[*]
end_of_line = lf

Itu dia. Pengaturan ini secara otomatis akan menerapkan akhir baris gaya Unix setiap kali Anda menyimpan file dalam struktur direktori itu. Anda dapat melakukan lebih banyak hal keren, mis. potong spasi putih yang tidak diinginkan atau tambahkan baris baru di akhir setiap file. Untuk detail lebih lanjut, lihat contoh file di https://github.com/sindresorhus/editorconfig-sublime , yaitu:

# 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

The root = truegaris berarti bahwa EditorConfig tidak akan mencari lain .editorconfigfile di tingkat atas dari struktur direktori.

Nathan C.
sumber
Tidak cukup agresif. Saya membutuhkan plugin untuk mengidentifikasi rantai orang-orang yang mengarah ke file yang memiliki crlf dan meninju masing-masing di wajah. Dan kemudian simpan dengan lf.
ArtOfWarfare
Terima kasih, ini adalah masalah saya, saya telah menginstal plugin ini dan mengambil konfigurasi yang salah dari file .config
Luke Robertson
1

untuk memilih akhir baris dari LF ke CRLF:

buka Luhur dan ikuti langkah-langkah: -

1 tekan Ctrl + shift + p lalu instal nama paket garis akhiran

sekali lagi tekan Ctrl + shift + p

2 pada kotak input kosong ketik "Line unify ending"

3 Tekan enter dua kali

Sublime kadang-kadang membeku dan akibatnya akan mengubah ujung garis dari LF ke CRLF

sharma parth
sumber
1

Cara paling sederhana untuk memodifikasi semua file proyek sekaligus (batch) adalah melalui paket Line Endings Unify :

  1. Ctrl+ Shift+ Pketik inst + pilih Instal Paket .
  2. Ketik garis akhir + pilih Baris Akhir Bersatu .
  3. Setelah terinstal, Ctrl+ Shift+ P+ ketik end + pilih Line Endings Unify .
  4. ATAU (bukannya 3.) salin:

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

    ke array Pengguna (panel kanan, setelah pembukaan [) di Preferensi -> KeyBindings + tekan Ctrl+ Alt+ L.

Seperti disebutkan dalam jawaban lain :

  • Karakter Carriage Return ( CR ) ( 0x0D, \r) [...] Sistem operasi Macintosh awal (OS-9 dan yang lebih lama).

  • Karakter Line Feed ( LF ) ( 0x0A, \n) [...] Sistem berbasis UNIX (Linux, Mac OSX)

  • Urutan End of Line ( EOL ) ( 0x0D 0x0A, \r\n) [...] (non-Unix: Windows, OS Symbian).

Jika Anda memiliki node_modules , bangun atau folder lain yang dibuat secara otomatis, hapuslah sebelum menjalankan paket.

Ketika Anda menjalankan paket:

  1. Anda diminta di bagian bawah untuk memilih ekstensi file mana yang akan dicari melalui daftar yang dipisahkan koma (ketikkan satu-satunya yang Anda perlukan untuk mempercepat penggantian, misalnya js,jsx).
  2. maka Anda akan ditanya baris Input mana yang berakhir untuk digunakan , misalnya jika Anda memerlukan tipe LF\n .
  3. tekan ENTERdan tunggu sampai Anda melihat jendela peringatan dengan LineEndingsUnify Complete .
CPHPython
sumber