2011-06-20 39 views
6

tôi sáp nhập một file python sử dụng vimdiff, và kết quả có một cái gì đó như thế này:Tôi có thể có vim chỉnh sửa nhiều dòng không?

def code(): 
    line 1 
    line 2 
    line 3 
    line 4 
    ... 
    line n 

Trong trạng thái này, thụt đầu dòng là không phù hợp. Làm thế nào tôi có thể loại bỏ tất cả các không gian ở phía trước của dòng? Tôi đã thử trong chế độ Visual, nhưng nó chọn toàn bộ dòng. Vim có chỉnh sửa nhiều dòng? Notepad ++ cho phép điều này với Alt-Shift.

Trả lời

6

Ctrl-V để chọn các khối.

Hoặc, để loại bỏ tất cả các màu trắng-không gian vào lúc bắt đầu của tất cả các dòng trong file:

:%s/^\s\+ 
+2

Nếu bạn sử dụng Ctrl-V thì j để chọn cột mà bạn muốn căn chỉnh mã của mình, nhấn '<' để dịch mã nằm phía sau cột. – Benoit

+0

@Benoit: Great trick! Tôi thường tăng/giảm thụt đầu dòng ở giữa các dòng: cho đến bây giờ tôi đã giật/dán không gian! –

6

Có ít nhất hai giải pháp cho vấn đề của bạn:

  1. Có một blockwise chọn chế độ bạn nhập bằng cách sử dụng Ctrlv. Bạn có thể chọn không gian ở đầu dòng của mình và nhấn d.

  2. Ngoài ra, bạn có thể chọn linewise dòng bạn muốn thay đổi bằng cách nhập chế độ trực quan với SHIFTv (sau đó sử dụng mũi tên xuống hoặc j để chọn). Và sau đó sử dụng < để xóa một mức thụt đầu dòng. Sử dụng . để lặp lại thao tác cuối cùng nếu bạn muốn xóa nhiều thụt đầu dòng.

3

phím ShiftV sẽ đưa bạn vào chế độ dòng hình ảnh, và sau đó bạn có thể nhấn : nhập lệnh để thực thi trên chỉ các dòng được chọn.

3

Với chế độ VISUAL, bạn chỉ phải chọn tất cả các dòng bạn muốn thụt lề lại và nhấn =.

Tôi chưa bao giờ sử dụng Notepad ++ nhưng tôi nghĩ rằng những gì bạn gọi là chỉnh sửa nhiều dòng có thể đạt được với những gì Vim gọi VISUAL BLOCK: thay vì V nhấn <C-v>. Sau đó, bạn có thể chọn các phần hình chữ nhật của văn bản. Khi bạn có cột của mình, hãy nhấn I hoặc A để vào chế độ EDIT sau đó <Esc> để áp dụng chỉnh sửa của bạn cho tất cả các dòng. Vì bạn muốn xóa một không gian duy nhất, bạn phải chọn cột không gian một cách trực quan và nhấn x hoặc d.

Bạn cũng có thể làm điều đó với tìm kiếm/thay thế đơn giản, tôi đoán vậy. Hoặc sử dụng :norm.

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