Khi nào so sánh văn bản nhanh thực sự có ích
Hầu hết các chỉnh sửa đều trở nên vô hình ngay sau khi được thực hiện. Đọc hai phiên bản đặt cạnh nhau vừa chậm vừa không đáng tin: người ta thường xuyên bỏ sót một chữ số bị đổi trong giá tiền, một chữ "không" bị xóa mất hay một ngày tháng bị hoán đổi.
Công cụ diff sẽ làm việc dò tìm thay bạn. Những trường hợp điển hình giúp bạn tiết kiệm đáng kể thời gian:
- Kiểm tra xem đối tác đã sửa gì trong hợp đồng, báo giá hay điều khoản trước khi bạn ký.
- So sánh hai lần xuất cùng một danh sách (email, SKU, ID) để xem mục nào mới xuất hiện hoặc đã biến mất.
- Tìm nguyên nhân khiến hai tệp cấu hình hoặc hai tệp
.envhoạt động khác nhau. - Đối chiếu một bài viết hay bản dịch đã chỉnh sửa với bản nháp gốc.
Cách so sánh hoạt động
Công cụ dùng phương pháp dãy con chung dài nhất (longest common subsequence), cùng họ thuật toán với git diff và lệnh diff kinh điển của Unix. Nó tìm phần văn bản chung lớn nhất có thể giữa hai phiên bản, giữ phần đó là không đổi, và đánh dấu mọi thứ còn lại là đã bị xóa khỏi bản gốc hoặc được thêm vào bản mới.
Kết quả được tính lại ngay khi bạn gõ hoặc dán, nên bạn có thể sửa nội dung ở bất kỳ ô nào và thấy ngay tác động. Đoạn bị xóa hiển thị màu đỏ có gạch ngang, đoạn được thêm hiển thị màu xanh lá, phần còn lại là văn bản thường với phông chữ đơn cách (monospace) để giữ căn lề dễ đọc trong mã nguồn và bảng.
Bộ đếm phía trên kết quả có ý nghĩa hơi khác nhau ở mỗi chế độ:
- Ở chế độ Theo dòng, nó đếm số dòng:
+4 / −2nghĩa là có bốn dòng được thêm và hai dòng bị xóa. Một dòng bị sửa được tính một lần là xóa (phiên bản cũ) và một lần là thêm (phiên bản mới). - Ở chế độ Theo từ, nó đếm các đoạn thay đổi chứ không đếm từng từ riêng lẻ. Một cụm sáu từ được viết lại tại cùng một chỗ được tính là một lần xóa và một lần thêm.
Theo dòng và theo từ trong thực tế
Chế độ theo dòng coi mỗi dòng là một đơn vị không thể chia nhỏ. Đây là cách phù hợp cho mọi thứ mà bản thân từng dòng đã có ý nghĩa: mã nguồn, các hàng CSV, tệp log, danh sách tên, thiết lập YAML hay .ini. Chế độ này cũng rất khắt khe: chỉ cần một dấu cách thừa ở cuối hoặc một tab thay cho dấu cách là dòng đó đã bị coi là khác.
Chế độ theo từ tách văn bản thành các từ và dấu câu rồi so sánh chúng. Cách này tốt hơn hẳn cho văn xuôi, nơi cả một đoạn văn thường chỉ là một dòng dài và so sánh theo dòng chỉ cho bạn biết "đoạn này đã thay đổi". Ở chế độ theo từ, bạn thấy chính xác từ nào đã bị thay. Nó cũng dễ tính hơn: những khác biệt chỉ nằm ở khoảng trắng, chẳng hạn hai dấu cách giữa các câu, phần lớn được bỏ qua.
Một thói quen tốt là bắt đầu bằng chế độ theo dòng để thấy thay đổi nằm ở đâu, sau đó chuyển sang theo từ để đọc chính xác điều gì đã đổi bên trong một dòng dài.
Để có kết quả sạch và dễ đọc
Phần lớn các kết quả diff gây rối đến từ "nhiễu" định dạng chứ không phải chỉnh sửa thật. Vài điều nên kiểm tra trước khi so sánh:
- Ký tự xuống dòng và ngắt dòng. Văn bản sao chép từ PDF hay email thường có ngắt dòng cứng giữa câu. Nếu một phiên bản bị ngắt dòng còn bản kia thì không, chế độ theo dòng sẽ đánh dấu mọi thứ là đã thay đổi. Hãy dùng chế độ theo từ, hoặc xóa các ngắt dòng trước.
- Chữ hoa, chữ thường. Phép so sánh phân biệt hoa thường, nên "Invoice" và "invoice" là khác nhau. Nếu chữ hoa thường không quan trọng với bạn, hãy chuẩn hóa cả hai văn bản bằng công cụ chuyển đổi chữ hoa chữ thường trước khi dán.
- Danh sách đã sắp xếp và chưa sắp xếp. Diff có tính đến thứ tự. Nếu hai danh sách chứa cùng các mục nhưng khác thứ tự, việc di chuyển sẽ hiện thành xóa và thêm. Hãy sắp xếp cả hai danh sách theo cùng một cách trước nếu bạn chỉ quan tâm mục nào có mặt.
- JSON và dữ liệu đã rút gọn. Một tài liệu JSON đã minify chỉ là một dòng khổng lồ. Hãy định dạng đẹp cả hai phiên bản bằng công cụ định dạng JSON với cùng kiểu thụt lề, rồi so sánh theo dòng; mỗi khóa sẽ nằm trên một dòng riêng và thay đổi trở nên rõ ràng.
- Dấu ngoặc kép và gạch ngang kiểu "thông minh". Trình soạn thảo văn bản thay
"bằng dấu ngoặc kép kiểu in ấn và-bằng gạch ngang en. Thoạt nhìn chúng giống hệt nhau nhưng là các ký tự khác nhau và sẽ hiện thành thay đổi.
Dung lượng và quyền riêng tư
Cả hai văn bản đều ở lại trong trang. Không có gì được gửi lên máy chủ, nên so sánh một hợp đồng chưa công bố, mã nguồn nội bộ hay tệp chứa dữ liệu khách hàng cũng chẳng khác gì so sánh hai danh sách đi chợ. Đóng tab là mọi thứ bị xóa.
Tốc độ phụ thuộc vào thiết bị của bạn và mức độ khác nhau giữa hai văn bản. Vài nghìn dòng được so sánh ngay lập tức; hàng chục nghìn dòng thay đổi nhiều có thể mất vài giây. Nếu thấy chậm, hãy chỉ so sánh phần liên quan, hoặc dùng chế độ theo dòng, vốn có ít đơn vị cần đối khớp hơn nhiều so với chế độ theo từ.