Bahasa Melayu

Alat pembangun · Perbandingan teks

Setiap Baris Berubah? Penghujung Garisan, Ruang Mengekor dan BOM dalam Perbezaan

· Bagaimana ia berfungsi

perbezaan teks penghujung baris penyahpepijatan

Susun baris selari dengan tanda akhir tambahan dan penanda baris pertama
Ilustrasi vektor ToolAcre asal

Mendiagnosis tiga punca perbandingan yang tidak kelihatan yang melaporkan setiap baris sebagai berbeza dan menunjukkan cara untuk mengetahui yang mana satu anda ada sebelum menyalahkan pengarang.

Fail yang sama, disimpan dua kali, nampaknya ditulis semula — menyediakan kes biasa fail yang diedit pada dua sistem pengendalian

Dua simpanan boleh kelihatan seperti penulisan semula apabila editor menukar aksara yang tidak kelihatan, tetapi tingkah laku ToolAcre bergantung pada aksara yang diubah. Ia menormalkan penghujung baris sebelum dipadankan, manakala ruang di tepi garisan dan U+FEFF pada permulaan kekal kandungan baris biasa melainkan pilihan lain mengubah kunci.

Bina lekapan diagnostik dan bukannya meneka daripada warna. Bandingkan satu pasangan yang berbeza sahaja dalam penghujung, satu lagi berbeza dalam ruang mengekor dan satu pertiga dengan BOM terkemuka. Pasangan terkawal mendedahkan sempadan alat dengan lebih dipercayai daripada fail sebenar yang mengandungi beberapa perubahan yang tidak kelihatan sekaligus.

CRLF berbanding LF: watak di hujung setiap baris — menerangkan sebab Windows menamatkan baris dengan dua aksara, Unix dengan satu dan bagaimana perbezaan melihat pemulangan pengangkutan tambahan

`splitLines` menggantikan CRLF dan CR tunggal dengan LF, kemudian berpecah. Ujian membuktikan bahawa ketiga-tiga konvensyen menghasilkan tatasusunan yang sama. Oleh itu perbezaan CRLF-sahaja tidak kelihatan walaupun Abaikan ruang kosong dimatikan; dakwaan garis besar bahawa setiap baris akan berbeza bercanggah dengan pelaksanaan ini.

Baris baharu terakhir juga tidak mencipta baris tambahan. Selepas berpecah, satu entri kosong terminal dialih keluar. Garis kosong tulen di tengah kekal sebagai unit perbandingan, jadi tingkah laku membezakan konvensyen penamat fail daripada pemisahan menegak yang disengajakan di dalam dokumen.

ToolAcre menormalkan CRLF, CR dan LF sebelum perbandingan, jadi perubahan tamat sahaja hilang

Ruang jejak kekal dalam baris asal. Dengan perbandingan biasa, `name=value` dan `name=value ` mempunyai kunci yang berbeza. Abaikan pemangkasan ruang kosong kedua-dua hujung dan runtuhkan larian dalaman, supaya pilihan itu boleh menjadikan pasangan itu sepadan sambil mengekalkan teks asal kiri dalam baris sama yang dipaparkan.

Pustaka juga melaksanakan pilihan `ignoreTrailingWhitespace` yang lebih sempit, tetapi UI semasa tidak mendedahkannya. Artikel tidak boleh menerangkan kotak pilihan yang tidak boleh dipilih oleh pengguna. Panel yang dihantar menawarkan Abaikan sarung, Abaikan semua perbezaan ruang kosong dan Runtuhkan larian tidak berubah yang lama.

Tanda tertib bait di bahagian atas fail — menerangkan aksara U+FEFF sesetengah editor menambahkan fail UTF-8 dan sebab ia sahaja menjadikan baris pertama berbeza

Tanda pesanan UTF-8 yang dinyahkodkan kepada teks JavaScript ialah U+FEFF pada permulaan baris pertama. `splitLines` tidak mempunyai pengalihan keluar BOM yang jelas. Dengan padanan biasa, watak itu boleh membuat sahaja baris pertama berbeza manakala baris kemudian kekal sama.

JavaScript operasi ruang kosong mungkin menganggap U+FEFF sebagai ruang kosong apabila Abaikan ruang kosong memanggil `trim`, tetapi artikel ini tidak menggeneralisasikannya ke dalam tingkah laku penyahkodan fail. Editor menerima rentetan; ia tidak membaca bait fail atau pengekodan laporan. Periksa watak sebenar apabila asal peringkat bait penting.

Contoh yang berkesan: membezakan tiga punca — memberikan laluan keputusan: perbezaan baris pertama sahaja menghala ke BOM, setiap baris menghala ke penghujung, garis berselerak menghala ke ruang belakang

Mulakan dengan `alpha beta` dan `alpha beta`: tersebut result ialah identical. Next compare `alpha beta` dengan `alpha beta`: mod biasa melaporkan baris penggantian, manakala mod ruang kosong sepadan dengannya. Akhir sekali, awalan alfa sebelah dengan U+FEFF dan perhatikan kesan baris pertama.

Urutan itu memisahkan punca menggunakan operasi yang terbukti repositori. Jika setiap baris masih berbeza selepas menamatkan normalisasi, siasat kandungan, lekukan atau aksara mengekor daripada menyalahkan CRLF sahaja. Jika sahaja baris satu sahaja yang berbeza, periksa titik kod utamanya sebelum menulis semula keseluruhan fail.

Menggunakan pilihan ruang kosong sebagai diagnostik — menunjukkan cara mendayakan ruang abaikan dalam perbandingan Teks ToolAcre boleh menyerap bunyi ruang belakang dan hujung baris supaya pengeditan sebenar menonjol

Abaikan ruang kosong berguna untuk hingar ruang belakang kerana ia memangkas dan memekatkan kekunci baris. Ia tidak bertanggungjawab untuk menyembunyikan CRLF berbanding LF; yang telah berlaku semasa perpecahan. Mengekalkan peringkat tersebut berasingan menghalang kesimpulan yang mengelirukan tentang pilihan yang membaiki perbandingan.

Jalankan kedua-dua paparan kerana pemangkasan boleh menyembunyikan lekukan yang bermakna dan pemeluwapan boleh mengubah nilai lebar tetap atau literal rentetan. Keputusan normal yang senyap mengatakan kunci sepadan di bawah transformasi itu. Ia tidak memperakui bahawa fail asal adalah bait-sama atau boleh ditukar secara semantik.

Mod ruang kosong mendiagnosis ruang mengekor, manakala penghujung baris sudah dinormalisasi

Perbezaan teks tidak menukar fail, mengkonfigurasi Git, menukar tetapan editor atau mendedahkan bait perenambelasan. Ia menerima rentetan yang ditampal dan melaporkan operasi baris. Nasihat tentang `.gitattributes`, `core.autocrlf` atau pembaikan pengekodan tergolong dalam alat yang tingkah lakunya boleh disahkan secara berasingan.

Alat ini juga tidak dapat membezakan cara watak halimunan memasuki teks. Pemformat, papan keratan, penyahkod atau suntingan manual mungkin menghasilkan rentetan yang sama. Gunakan perbandingan untuk mencari baris, kemudian periksa saluran paip sumber sebelum menetapkan punca.

Bawa pulang: semak invisible sebelum menyalahkan pengarang — ringkaskan laluan diagnostik dan catatkan perbandingan berjalan dalam pelayar anda, jadi fail sensitif kekal pada mesin anda

Semak halimunan dalam susunan tetap: penghujung, mengekor atau ruang kosong dalaman, kemudian memimpin aksara khas. Ujian ToolAcre memberikan keputusan yang kukuh untuk kategori pertama dan pilihannya membantu mengasingkan yang kedua. Yang ketiga mungkin memerlukan pemeriksa watak di luar laluan ini.

Pemisahan garis sisi pelayar menjadikan perbezaan penamat merentas platform hilang mengikut reka bentuk. Itu mudah, tetapi ini juga bermakna alat ini tidak dapat membuktikan dua fail sumber menggunakan bait baris baharu fizikal yang sama. Pilih utiliti sedar bait apabila mengekalkan perwakilan wayar atau repositori yang tepat adalah keperluan.