2012-01-13 32 views
12

Nói rằng tôi có đoạn mã sau:vim: xóa tất cả các không gian trống cho đến khi nhân vật phi trống tiếp theo

<p> 
    Hello 
</p> 

Và tôi muốn làm cho nó

<p>Hello</p> 

Tôi muốn đưa con trỏ vào chế độ bình thường ở cuối dòng 1, do đó, trên '>' và có lệnh xóa tất cả dấu cách cho đến ký tự tiếp theo. Gần nhất tôi có thể nghĩ đến là chuyển động

d/Hello 

đó xóa tất cả mọi thứ cho đến khi Xin chào nhưng vấn đề là nó cũng xóa ký tự nằm dưới con trỏ (các '>') vì vậy tôi kết thúc với

<pHello 
</p> 

Bạn sẽ làm như thế nào?

+3

Trước khi bỏ phiếu để đóng, vui lòng đọc: [Câu hỏi Vim: SO hoặc SU] (http://meta.stackexchange.com/questions/25925/vim-questions-so-or-su) –

Trả lời

16

Một cách khi bạn sẽ không cần phải lặp lại hành động này nhiều lần.

JxJx 

Giải thích:

J   # Join current line with next one but substitute end of line with a space. 
x   # Remove the space. 
Jx   # Repeat same process for last line. 
+0

Tôi cần phải làm điều đó nhiều lần và cố gắng lặp lại hành động qua '.', nhưng chỉ lặp lại' x' không phải là 'J'. Bạn có thể vui lòng thêm một ví dụ nếu một người cần lặp lại điều này nhiều lần không? – k0pernikus

6

Có một văn bản đối tượng tag trong vim:

  • đặt con trỏ trong thẻ, nhấn vat để chọn toàn bộ thẻ
  • báo chí :, nó trở nên :'<,'>
  • loại j , nó sẽ trở thành :'<,'>j
  • báo chí Nhập tham gia đường dây

:help v_at 

at   "a tag block", select [count] tag blocks, from the 
      [count]'th unmatched "<aaa>" backwards to the matching 
      "</aaa>", including the "<aaa>" and "</aaa>". 
      See |tag-blocks| about the details. 
      When used in Visual mode it is made characterwise. 
+2

'vatJ' sẽ giúp bạn có được kết quả tương tự. – Kambus

+3

Điều này không thực sự trả lời câu hỏi vì các khoảng trống được thêm bởi ': join'. –

1

Khi đứng ở bất cứ đâu trong dòng thứ hai (một trong đó nói Hello), bấm các phím sau: ^d0vatgJ. Đơn giản chỉ cần giải thích:

  1. ^ sẽ đi đến nhân vật phi khoảng trắng đầu tiên, H
  2. d sẽ xóa vào đầu dòng
  3. vmộtt sẽ chọn toàn bộ thẻ
  4. gJ sẽ tham gia tất cả các dòng không có khoảng cách chèn

Nếu bạn bắt đầu trên H, bạn có thể bỏ qua phần ^.

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