Có cách nào để tự động bỏ tab mọi thứ trong tệp nguồn của bạn bằng cách sử dụng lệnh không? [đóng cửa]


11

Và sau đó để tự động thụt lại sau đó? Tôi đã thử sao chép mã từ màn hình đầu cuối này sang màn hình khác, nhưng việc lập bảng đã bị rối tung.

Tôi không biết nên gọi chức năng này là gì, vì vậy thật khó để tôi tìm thấy nó trên google (thường trả lại những thứ liên quan đến cách đặt kích thước tab, đó không phải là điều tôi đang tìm kiếm).



1
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì nó là về một công cụ lập trình. Các câu hỏi về các công cụ đặc biệt thích hợp để StackOverflow , hoặc trong trường hợp này, Vi.SE . Tuy nhiên, câu hỏi này quá cũ để di chuyển.

1
Tôi bỏ phiếu để đóng câu hỏi này như off-topic vì nó là về việc sử dụng một công cụ cụ thể và nên đã được yêu cầu trên Stack Overflow hoặc (nếu được yêu cầu bây giờ) vi.se .

Câu trả lời:


9

Vim có một retablệnh cho phép bạn lập bảng hoặc hủy bỏ tài liệu của bạn. Nó sử dụng các cài đặt như tabstopexpandtab. Vì vậy, nếu bạn muốn thay thế các tab bằng dấu cách, bạn có thể làm như sau:

:%retab

Xem retabtài liệu để biết chi tiết đầy đủ.

Caveat Emptor : điều này cũng thay thế các tab KHÔNG ở đầu dòng. Vì vậy, nếu bạn sử dụng các tab cứng ở giữa các chuỗi, chúng cũng sẽ được thay thế.


3
Nói chung, dù sao đi nữa, việc đưa một tab thực sự vào một chuỗi là một ý tưởng tồi. Nó vẫn có thể xảy ra, nhưng \tđược ưa thích, chỉ để tránh những loại vấn đề này.
Spencer Rathbun

6

Để mở rộng câu trả lời của @ Kaleb (Tôi chưa có đại diện nào để bình luận), trước khi thực hiện lệnh retab, bạn sẽ cần phải làm như vậy :set expandtab (set et). Nếu không, retab sẽ không thay thế các tab bằng dấu cách.

Trong additon, bạn có thể muốn chỉ định các tabstops. Thông thường trong mã nguồn được tạo bởi người khác, mã được viết với các tab được đặt thành 4 hoặc thậm chí 2. Trước khi thực hiện :%retablệnh, hãy thử nghiệm với các tabstop khác nhau. Thử

:set ts=8 (the default)
:set ts=4 
:set ts=2  

để xem thiết lập nào có ý nghĩa nhất.

Để quay ngược (thay thế khoảng trắng bằng các ký tự TAB thích hợp, hãy sử dụng

:set noet
:%retab!

1

Bằng cách bỏ tab, bạn có nghĩa là thay đổi các tab thành không gian? Nếu vậy, thay thế khoảng trắng cho các tab trong toàn bộ bộ đệm như thế này:

:%s/^I/    /g

Đó là bốn khoảng trống ở phía bên phải của sự thay thế, nhưng bạn có thể biến nó thành bất kỳ số nào bạn muốn. Để có được ký tự ^Itab theo nghĩa đen , bạn có thể nhấn ^Vtheo sau là phím Tab.

Bạn có thể thụt lề với =lệnh. Để thụt lại toàn bộ nội dung của bộ đệm, sử dụng các lệnh sau:

gg
=G

Điều này sẽ đưa bạn đến đỉnh, sau đó thụt lại mọi thứ ở phía dưới.


-1: Thay thế một tab bằng một số khoảng trắng cố định hầu như không bao giờ hữu ích. Nó sẽ thay đổi giao diện của bất kỳ dòng nào chứa một tab có trước một tab không.
kevin cline
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.