2012-05-17 44 views
7

Có lệnh sao chép một chức năng hoàn chỉnh không? (Không bằng cách chọn thông qua chuột)Vim: Chức năng sao chép

ví dụ: 10yy -> sẽ sao chép 10 dòng từ vị trí con trỏ.
Tôi không biết không có dòng nào của hàm, nhưng muốn sao chép toàn bộ hàm.

Có lệnh nào để sao chép toàn bộ chức năng không?

Trả lời

2

Nếu bạn đang sử dụng VIM, và hàm chức năng bằng ngôn ngữ lập trình mà bạn tình cờ kèm theo, bạn chỉ cần đặt con trỏ vào một trong các dấu ngoặc và gõ y%.

+0

Nếu bạn muốn nhận khai báo phương pháp, bạn có thể muốn thêm tiền tố cho lệnh của bạn bằng 'V', vì vậy nó sẽ trở thành' V% y' – tannerli

2

Ngôn ngữ dấu ngoặc nhọn (như Java) có thể sử dụng các lệnh ]m để điều hướng đến các hàm; một số loại tệp cũng xác định ]] cho việc này. Với điều này, bạn có thể sử dụng [mV]My (đi đến đầu chức năng, bắt đầu chế độ trực quan theo chiều dọc, đi đến kết thúc của hàm, yank).

Nhiều loại tệp cũng định nghĩa chức năng gấp. Với điều đó, bạn có thể sử dụng zCyyzO (đóng tất cả các nếp gấp, yank toàn bộ nếp gấp dưới con trỏ, mở gấp).

22

Đây là những gì tôi làm trong JavaScript và PHP:

va{Vy 
  1. Đặt con trỏ ở đâu đó trong phương pháp của tôi,
  2. va{ trực quan chọn khối mã,
  3. V để biến lựa chọn từ ký tự khôn ngoan đến dòng-khôn ngoan,
  4. y để yank

Nếu bạn quá sâu và va{ chỉ chọn một phần chức năng của bạn, bạn có thể làm nhiều hơn a{ cho đến khi bạn chọn những gì bạn muốn.

+1

'ya {' đơn giản hóa chuỗi của bạn. Hoạt động tốt cho mọi ngôn ngữ dựa trên dấu ngoặc đơn. –

+0

'ya {' chỉ yanks các dấu ngoặc và những gì bên trong. Một bước bổ sung là cần thiết để cũng yank phần 'function myFunc (args)'. – romainl

+3

Thật vậy, nhưng bạn giả sử ở đây rằng khung mở nằm trên cùng một dòng với dấu ngoặc đơn từ chữ ký hàm. –

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