2012-02-20 59 views
8

Khi bạn mở tệp có đuôi kết thúc, Visual Studio sẽ nhắc bạn bình thường hóa nó. Có cách nào để chuẩn hóa tất cả các tệp trong giải pháp hiện tại không?Hàng loạt chuẩn hóa kết thúc dòng trong Visual Studio

bài viết

liên quan mà không trả lời câu hỏi của tôi:

Trả lời

2

Visual Studio không có một cơ chế để kết thúc dòng bình thường cho toàn bộ dung dịch. Tính năng cơ bản bị hạn chế để kiểm tra xem tệp có chính xác không khi mở và thay đổi tại thời điểm đó.

Việc chuẩn hóa kết thúc dòng mặc dù là một API được hiển thị bởi Visual Studio trong IEditorOperations::NormalizeLineEndings. Do đó nó có thể viết một plugin/script mà hành động chống lại các mục trong giải pháp.

+0

Điều đó thật tuyệt! Tôi đã không bao giờ viết một plugin/script cho VS, tôi có thể chỉ cần mở một giao diện điều khiển PowerShell và viết một số vòng lặp trên tất cả các tập tin giải pháp? – Borek

+1

@Borek tiếc là nó thực sự không phải là rất dễ dàng. Vấn đề chính mà bạn gặp phải là không có định nghĩa tuyệt vời về những gì người dùng kiểm soát tập tin. Ví dụ bạn có thể không muốn làm điều này chống lại nói rằng một tập tin được tạo ra nhưng nó không giống nhiều hơn một tập tin bình thường từ một quan điểm API. Ngoài ra không phải tất cả các tập tin trong IDE có một tập tin vật lý thực sự ủng hộ chúng trên đĩa (cũng khó để nói từ một API). Nói chung liệt kê các tập tin sẽ làm việc nhưng bạn kết thúc với tất cả các góc/trường hợp đặc biệt. Trong tất cả các khả năng đó là lý do tại sao hành vi VS là ngày hôm nay – JaredPar

+0

Thật đáng tiếc, tôi nghĩ sẽ có một cách dễ dàng để có được danh sách mọi thứ tôi thấy trong trình khám phá giải pháp (và là một tệp). – Borek

5

Bạn có thể tạo tệp dơi chuẩn hóa tất cả các tệp đệ quy.

  1. Tải xuống công cụ dòng lệnh Tofrodos.
  2. Tạo một file bat trong thư mục gốc của bạn thư mục giải pháp với các nội dung sau đây:

cho/R %% i in (* .cs) làm "C: \ PRGS \ tofrodos \ todos. exe" -p "%% i"

Lưu ý rằng bạn cần phải cập nhật các đường dẫn tập tin để todos.exe, và có thể là * cs lọc.

Sau đó, bạn chạy tệp dơi và chờ cho đến khi kết thúc.

1

tôi chỉ sử dụng Notepad ++ tìm và thay thế tính năng:

  1. Set NotePad ++ để hiển thị kết thúc dòng, View-> những biểu tượng chương trình -> hiển thị tất cả các nhân vật
  2. Mở tìm trong các tập tin thoại
  3. bộ tìm điều gì cần \ r \ n (hoặc \ n) tùy thuộc vào phạm vi bạn đang làm
  4. đặt thay thế bằng \ n (hoặc \ r \ n)
  5. trỏ thư mục vào thư mục giải pháp

bạn nên sao lưu hoặc cam kết bất kỳ thay đổi bạn có trước khi làm điều này

+2

nếu bạn thay \ n bằng \ r \ n, bạn sẽ có thời gian xấu. – yellowblood

2

Như yellowblood chỉ ra trong câu trả lời Aaron F., nếu bạn thay thế \n (LF) với \r\n (CRLF), bạn sẽ có một thời gian xấu vì nó sẽ thêm một CR trước mỗi LF, ngay cả những người đã có một. Tuy nhiên, những gì bạn muốn có thể đạt được với các biểu thức chính quy sử dụng bất kỳ trình soạn thảo văn bản nào hỗ trợ thay thế hàng loạt trong các tệp (như Notepad ++ hoặc "Thay thế tệp trong Visual Studio" của Visual Studio).

Ví dụ, để thay thế LF với CRLF, hãy chắc chắn để kích hoạt tùy chọn regex sau đó thay thế tất cả lần xuất hiện của

(?<!\r)\n 

với

\r\n 

\r là một trở về vận chuyển (CR), \n là nguồn cấp dữ liệu dòng (LF). Mẫu (?<!\r)\n sẽ khớp với bất kỳ nguồn cấp dữ liệu dòng nào có ký tự trước đó không phải là dấu xuống dòng, mà không cần chụp (tức là thay thế) ký tự trước đó.

Cách khác xung quanh đơn giản hơn nhiều: chỉ cần thay thế \r\n bằng \n.

Như mọi khi, hãy sao lưu các tệp của bạn và đảm bảo kiểm tra hoạt động trên một tệp trước khi xử lý toàn bộ giải pháp.

Tôi đã thêm điều này làm nhận xét cho câu trả lời của Aaron F. nhưng danh tiếng của tôi không đủ cao :)

Các vấn đề liên quan