2009-02-18 22 views
5

Tôi có thông tin sau trong một tệp XML:Làm cách nào để sao chép toàn bộ mục nhập trong tệp XML bằng VIM?

<TypeDef name="a"> 
    <ArrayType high="14" low="0"> 
    <UndefType type="node"> 
    </UndefType> 
    </ArrayType> 
</TypeDef> 

Và tôi muốn sao chép mục nhập này. Thông thường tôi sẽ đi đến dòng đầu tiên, vào chế độ Line-Visual sử dụng V, đi xuống dòng cuối cùng, yank và paste.

Làm cách nào để sao chép toàn bộ mục nhập mà không tự tìm kiếm mục nhập?

Trả lời

2

Ngoài câu trả lời Nathan của bạn có thể muốn kiểm tra matchit.vim ... Nếu bạn có một cài đặt mới hơn bạn có thể có nó

http://www.vim.org/scripts/script.php?script_id=39

matchit mở rộng vim của% (tìm phù hợp với khung) để trang trải các thẻ xml/html và hơn thế nữa. Vì vậy, đối với giải pháp của bạn, hành động sẽ xuất phát từ thẻ bắt đầu

phù hợp tất nhiên rất hữu ích cho mục đích điều hướng chung.

6

Giải pháp Tôi đã học được ngày hôm nay (nhờ CMS người đã trả lời câu hỏi this) là sử dụng text object chuyển động VIM của.

Đặt con trỏ vào mục để sao chép, và gõ như sau trong chế độ lệnh: yat:

  • y Yanks theo phong trào sau.
  • at chọn thẻ hiện tại.

Lưu ý rằng nếu con trỏ nằm bên trong thẻ "ArrayType", thì đó là nội dung sẽ được kéo mạnh.
Cũng lưu ý rằng điều này sẽ không giật toàn bộ dòng. Chỉ từ dấu ngoặc mở của thẻ mở đến dấu ngoặc đóng của thẻ đóng. Điều này có thể gây ra vấn đề liên kết nếu bạn không cẩn thận.

Một cách để giải quyết vấn đề này là dán bằng :put thay vì chỉ p, như sau: yat:put.
Lưu ý rằng thao tác này sẽ không giữ được thụt đầu dòng vì mục nhập XML không được kéo dài thành toàn bộ dòng.

Một cách khác để làm điều đó là: vatVy:

  • v vào trực quan Mode.
  • at như trên.
  • V chuyển sang chế độ Đường trực quan và chọn toàn bộ dòng.
  • y yanks lựa chọn.
+0

Phương pháp ấn tượng! Tôi đã cố gắng để xác định một chức năng vim mới, nhưng đối tượng văn bản có vẻ là đủ mạnh. –

+0

bạn có thể đi thẳng vào dòng trực quan với V ... ví dụ Vaty sẽ đủ cho ví dụ thứ hai – michael

+0

có, nhưng sau đó làm 'at' đưa tôi ra khỏi dòng Visual, và tôi phải nhấn V một lần nữa anyway.Tôi nghĩ tôi nên bỏ qua ca đầu tiên và chỉ cần nhấn v –

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