2010-01-07 26 views
59

Tôi là một nhà phát triển C# vừa mới quyết định mở rộng kiến ​​thức của tôi về các công cụ có sẵn cho tôi. Công cụ đầu tiên tôi quyết định học là Vi/Vim. Tất cả mọi thứ đã được tiến triển tốt cho đến nay, nhưng có một vài câu hỏi tôi dường như không thể tìm ra câu trả lời cho:Vim yanking phạm vi của dòng

  1. phép nói rằng tôi muốn yank một loạt các dòng. Tôi biết có rất nhiều cách để làm như vậy, nhưng tôi muốn làm điều đó bằng số dòng. Tôi thấy nó sẽ tương tự như cách các lệnh thay thế hoạt động, giống như 81,91y. Có cách nào để làm việc này không?

  2. Tôi hơi bối rối về lệnh g ở chế độ bình thường. Nó dường như làm vô số thứ và tôi không thể xác định lệnh g làm gì ở cốt lõi của nó. Tôi đang bối rối về việc có hay không đó là một lệnh chuyển động hoặc một loại "bắt tất cả" cho các lệnh khác chạy qua chế độ bình thường. Ai đó có thể vui lòng giải thích điều này hoặc chỉ cho tôi tham chiếu cung cấp giải thích tốt về lệnh g không?

+1

Bạn có biết về lệnh ": giúp đỡ" trong vim (1)? –

+0

Có, nhưng tôi không thể tìm thấy nó trong tất cả các tài liệu tham khảo. Hóa ra tôi đã nghĩ rằng tôi sẽ làm điều đó từ chế độ bình thường, nhưng hometoast cho thấy làm thế nào nó đã được thực hiện từ chế độ lệnh. Đối với lệnh g, tôi chỉ thấy rằng sự trợ giúp không ràng buộc mọi thứ với nhau như tôi mong đợi từ các lệnh khác. – jnadro52

+3

Là một sang một bên, tôi có thể bạn muốn tạo một bài cho mỗi câu hỏi. – Dana

Trả lời

96

dòng Yank 81-91

:81,91y<enter> 

Nếu ngón tay của bạn không thích để tìm các phím :,, điều này sẽ làm việc tốt (đi đến dòng 81, yank 11 lines)

81gg11yy 

Chỉ sử dụng g của tôi là 5gg. Để đi đến dòng thứ 5. 22gg: dòng thứ 22. Như jimbo đã nói, nó thực sự chỉ là một công cụ sửa đổi cho một số lệnh khác.

Để hoàn thành, (http://vim.wikia.com/wiki/Power_of_g) giải thích rất nhiều cách thức hoạt động của chế độ lệnh trong số g.

+0

Wow, nhanh quá! Tôi đã không thử làm điều đó từ chế độ lệnh, duh! Cảm ơn bạn rất nhiều vì phản ứng nhanh. – jnadro52

+2

Sử dụng các chữ in hoa cũng cung cấp các biến thể: 'gg' sẽ chuyển đến dòng đầu tiên, trong khi' G' sẽ đi đến dòng cuối cùng. Ngoài ra, '5G' chuyển sang dòng 5. Các dấu có thể được sử dụng thay cho số dòng (tốt cho macro), ví dụ: ':' a, 52y' – NVRAM

+5

bạn cũng có thể thực hiện: 5 trong chế độ lệnh để đi đến dòng năm , vv – rmeador

4

g không tự làm gì cả. Đây là một trong số ít lệnh meta chứa một loạt lệnh không liên quan đến sorta.

z là một lệnh khác như vậy.

+0

Cảm ơn bạn. Bây giờ tôi hiểu rằng nó chỉ được sử dụng cho các mục đích khác nhau. Khi tôi cố gắng tìm hiểu những công cụ này, tôi cố gắng kết hợp các lệnh với thứ mà tôi có thể tóm tắt để tôi nhớ cách sử dụng nó đúng cách. Có vẻ như lệnh g chỉ là một trong những thứ mà bạn cần phải ghi nhớ để sử dụng đúng cách. – jnadro52

2

Vim của :help index mô tả g như:

|g|    g{char}   extended commands, see |g| below 

Cuộn xuống (hoặc :help g) cho một danh sách.

+1

Tôi đã quen thuộc với: trợ giúp nhưng tôi KHÔNG quen thuộc với: help (command). Điều đó sẽ rất hữu ích trong tương lai. Cảm ơn bạn, thưa bạn. – jnadro52

6

Tôi cũng muốn sử dụng tùy chọn số dòng tương vim của có nghĩa là tôi chỉ có thể nhập:

:-10,-7ya a 

để yank văn bản vào tên đệm a.

N.B. Chỉ định A sẽ nối thêm nội dung bạn đang thêm vào nội dung đệm hiện tại a.

Đừng quên bạn cũng có thể sao chép khối văn bản và di chuyển khối văn bản xung quanh cũng như với các lệnh tương tự:

:-10,-7co . 

phương tiện sao chép bốn dòng văn bản 10 dòng trên xuống dưới dòng hiện tại , và

:-10,-7mo . 

có nghĩa là di chuyển bốn dòng văn bản 10 dòng ở trên xuống dưới dòng hiện tại.

11

Bạn cũng có thể sao chép các dòng hiện tại vào vị trí con trỏ hiện tại của bạn bằng cách sử dụng 't'.

:81,91t.<enter> 

này sẽ dán các dòng 81-91 dưới dòng con trỏ trên.

Tôi đã học được điều này từ http://vimcasts.org là một tài nguyên tuyệt vời trên VIM.

5

Lệnh G chuyển đến một số dòng nhất định, nếu nó được đi kèm với một giá trị đếm. 81G đặt bạn trên đường 81.

Lệnh y có thể được kết hợp với một chuyển động, như G. Vì vậy, để yank tất cả mọi thứ cho đến khi dòng 91 bạn có thể sử dụng y91G.

Cùng bạn nhận được:

81Gy91G 

Đến dòng 81, sau đó giật mạnh trong khi đi đường 91.

+1

Tôi muốn tôi có thể upvote điều này nhiều hơn một lần. Một cái gì đó đã giúp tôi được sử dụng này để yank để đăng ký (trong trường hợp của tôi, đăng ký + tức là, clipboard): '' '81G" + y91G''' – mgarey

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