2010-09-29 38 views
7

Có một số surprisingnumber của questions trên thissubject, nhưng một số cách không ai trong số họ trả lời những gì tôi muốn.Tôi làm cách nào để thụt lề một khối mã trong vim?

Tôi có một khối mã như sau:

void foo { 

somecodehere 
morecode 
... 

} 

Như bạn có thể nhìn thấy ruột của chức năng của tôi là indents vào mức độ tương tự như phần còn lại của khối mã của tôi. Những gì tôi hiện đang làm là >% ở cuối khối của tôi (ví dụ: }) thụt vào toàn bộ khối, kể cả các đường có dấu ngoặc nhọn.

Điều tôi muốn làm là lệnh tương tự thụt vào mọi dòng ở giữa trừ dấu ngoặc nhọn của tôi.

Tôi không thể bắt đầu cho bạn biết thời gian này sẽ giúp tôi tiết kiệm được bao nhiêu.

+1

Sử dụng '=' để định dạng (không thụt lề, nhưng đối với tôi cung cấp kết quả giống nhau hoặc tốt hơn). Trừ khi bạn không thích cách vim định dạng mã của bạn. 'gg = G' sẽ định dạng toàn bộ tệp. – FrustratedWithFormsDesigner

+0

@Frrated không chính xác những gì tôi đang tìm kiếm (như đôi khi tôi không muốn gây rối với định dạng bên trong), nhưng cũng hữu ích để biết. Vì vậy, +1 cho bạn thưa ông – tzenes

Trả lời

11

Thay vì ánh xạ một cái gì đó mới, >i{ dường như làm những gì bạn muốn ở đây, nhưng nó di chuyển con trỏ.

+0

+1 - thậm chí ngắn hơn câu trả lời của tôi –

+0

Tôi đồng ý với việc di chuyển con trỏ – tzenes

+0

Slick. Điều đó chắc chắn sẽ xảy ra với Vim-ness của tôi. – alesplin

1

chèn

map sb v%><<%<< 

vào bạn vimrc (thay thế 'sb' với bất kỳ tổ hợp phím mà bạn muốn). nó thay đổi toàn bộ hàm ở bên phải và sau đó là dòng đầu tiên và dòng cuối cùng quay về bên trái. Nó hoạt động ở đầu tiên hoặc trên dòng cuối cùng của một khối

2

Đặt con trỏ bên trong khối bạn muốn thụt, và gõ vi{>

v vào chế độ trực quan.

i{ chọn tất cả mọi thứ bên trong thâm tâm {} chặn

> indents khối hình ảnh và quay ngược lại vào chế độ bình thường

Sau đó bạn có thể sử dụng '' để di chuyển con trỏ trở lại vào dòng ban đầu của nó.

N.B. nếu bạn muốn thụt lề, hãy thay thế i{ bằng a{.

1

Tôi sử dụng các nhãn hiệu đôi khi có thể gây đau nhưng nó hoạt động.
Chuyển đến dòng cuối cùng của hàm (dòng trên)}
ma Tạo dấu 'a'
Quay lại đầu chức năng và thực hiện việc này.

> ` một

Đó chỉ nói thụt lề bởi một mức độ cho đến khi nó đạt đến đánh dấu một.

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