tôi đã bổ sung thêm chức năng sau đây trong vimrc của tôi để loại bỏ dấu không gian trắng chỉ trước khi lưuLoại bỏ dấu không gian trắng chỉ dành cho dòng chỉnh sửa
fun! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
autocmd BufWritePre *.h :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.cpp :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.c :call <SID>StripTrailingWhitespaces()
Nó hoạt động thực sự tốt. Tuy nhiên, trong một số trường hợp nhất định, tôi chỉ muốn xóa dấu cách trắng sau các dòng mà tôi đã chỉnh sửa. Điều này là để đảm bảo rằng đầu ra diff
của tôi trông lành mạnh như đối với một số tệp mã cũ nhất gần như tất cả các dòng có dấu cách quay lại và tôi không muốn gây gánh nặng cho trình đánh giá mã của tôi với sự khác biệt không cần thiết.
diff -b
không phải là giải pháp ngay bây giờ vì nó cũng bỏ qua các khoảng trắng từ bất kỳ đâu trong một dòng và đôi khi thay đổi đó đủ quan trọng để bao gồm trong đầu ra diff
.
Vì vậy, câu hỏi của tôi là - có thể tách các dấu cách trắng theo sau chỉ từ các dòng đã được chỉnh sửa trong phiên này trong một tệp trong vim không?
Tôi có một quy tắc làm nổi bật làm nổi bật (theo một cách rất khó chịu) dấu cách khoảng trắng, vì vậy rất dễ dàng để tôi xem không gian nào cần được loại bỏ; nhưng 1 vì nó sẽ là tốt đẹp để tự động hóa hầu hết trong số đó. – SingleNegationElimination
Tại sao không, như một nhiệm vụ một lần, loại bỏ tất cả khoảng trống cuối của tất cả các tệp cũ của bạn? –
@MatthewStrawbridge Làm điều đó che khuất người đã viết (hoặc thay đổi lần cuối) các dòng khi bạn chạy một cái gì đó như git chú thích. (Nó vẫn có thể được tìm thấy, nhưng nó có các bước bổ sung.) –