2011-09-15 25 views
6

Ví dụ, thay vì liên kết sau đây:Làm cách nào để căn chỉnh các toán tử luồng IO << and >> trong Vim?

std::cout << "Hello " << "Hello " 
    << "world "; 

Tôi muốn trái align << điều hành, như:

std::cout << "Hello " << " Hello " 
      << "world "; 

Theo mặc định, Vim chọn cái đầu tiên. Có vẻ như nó chỉ làm tăng thụt đầu dòng cho một cấp cho dòng mới.

Vì vậy, có cách nào để tôi có thể căn chỉnh thứ hai theo mặc định không?

P.S. Tôi đã thử plugin Align nhưng nó căn chỉnh khu vực trong bảng, như:

std::cout << "Hello World" << "Hello " 
      << "World"  << "World Hello". 

mà tôi cho là quá thưa thớt.

Trả lời

4

Tôi đang sử dụng Tabular và các công trình này cho tôi

:Tabularize /^[^<<]\S* 


Output:

std::cout << "Hello World" << "Hello " 
      << "world " << "World Hello"; 

Giải thích

^ Bắt đầu từ tiếp theo << đến đầu tiên <<, sau đó trận đấu sẽ bắt đầu chính xác tại << đầu tiên.

+0

đây là cách đơn giản nhất và bạn cũng có thể thiết lập các quy tắc tương tự dễ dàng bằng tất cả các ngôn ngữ khác của bạn – dubvfan87

+0

Không hoạt động tốt cho tôi. Tôi sẽ sử dụng ': Tab/\% (<<. * \) \ @

+0

@ib đồng ý, thnx. Tôi cập nhật câu trả lời của tôi để thoát khỏi không gian thêm trong regex của tôi quá. –

1

Với plugin Align, lệnh để căn chỉnh các dòng văn bản đã chọn theo cách bạn muốn là :<,>Align! l: <<. Đối số đầu tiên là một lệnh AlignCtrl cho phép nó căn trái trường đầu tiên và xử lý phần còn lại của dòng dưới dạng một trường duy nhất. Đối số thứ hai là dấu tách. Hướng dẫn Align giải thích tất cả các đối số có sẵn và ánh xạ được xác định trước.

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