2008-09-12 13 views
21

Chọn một số lượng lớn văn bản mở rộng trên nhiều màn hình trong IDE như Eclipse khá dễ dàng vì bạn có thể sử dụng chuột, nhưng cách tốt nhất để chọn và xóa khối nhiều văn bản hoặc viết, ví dụ: ba phương pháp lớn ra một tập tin khác và sau đó xóa chúng cho mục đích thử nghiệm trong Vim khi sử dụng nó thông qua putty/ssh nơi bạn không thể sử dụng chuột?Trong Vim, cách tốt nhất để chọn, xóa hoặc nhận xét các phần lớn của văn bản nhiều màn hình là gì?

Tôi có thể dễ dàng yank-to-end-of-line hoặc yank-to-the-end-of-code-block nhưng nếu văn bản kéo dài trên nhiều màn hình, hoặc có rất nhiều dòng trống trong đó, Tôi cảm thấy như tay tôi bị trói vào Vim. Bất kỳ giải pháp?

Và một câu hỏi liên quan: có cách nào đó để chọn 40 dòng và sau đó nhận xét tất cả chúng (với "#" hoặc "//"), như thường thấy trong hầu hết các IDE?

+0

Một Ngoài @ zigdon của câu trả lời: bạn có thể sử dụng plugin NERDCommenter để nhận xét văn bản, vì vậy nếu bạn có văn bản được chọn trực quan và plugin này được cài đặt thì hãy sử dụng ', cc' để nhận xét văn bản. Nhiều ánh xạ trong ': h NERDComFunctionalitySummary'. – ZyX

Trả lời

23

Trước tiên, bạn có thể đặt vim để hoạt động với chuột, điều này sẽ cho phép bạn chọn văn bản giống như trong Eclipse.

Bạn cũng có thể sử dụng lựa chọn Trực quan - v, theo mặc định. Sau khi lựa chọn, bạn có thể yank, cut vv

Theo như ý kiến ​​ra khối, tôi thường chọn nó với VISUAL, sau đó làm

:'<,'>s/^/#/

Thay vào đầu mỗi dòng với một #. (Các điểm đánh dấu '<'> là điểm bắt đầu và và lựa chọn trực quan.

+1

làm thế nào để bạn đảo ngược dòng bình luận? –

+2

Vâng, bạn có thể 'hoàn tác';) Nhưng nếu không, bạn có thể làm một cái gì đó như ': s/^ # //' trên các dòng được chọn. – zigdon

+4

bạn cũng có thể chỉ định phạm vi: ': 213,244s/^/# /' để nhận xét, sau đó đảo ngược thao tác thành uncomment: ': 213,244s/^ # //' done! – brice

8

Sử dụng lệnh chặn hình ảnh v (hoặc V cho toàn bộ dòng và C - V cho khối hình chữ nhật). Trong khi ở chế độ chặn hình ảnh, bạn có thể sử dụng bất kỳ lệnh chuyển động nào bao gồm tìm kiếm; Tôi sử dụng} thường xuyên để chuyển sang dòng trống tiếp theo. Khi khối được đánh dấu, bạn có thể: w nó vào một tập tin, xóa, yank, hoặc bất cứ điều gì. Nếu bạn thực hiện một lệnh và khối hình ảnh biến mất, hãy chọn lại cùng một khối với gv. Xem: giúp thay đổi trực quan để biết thêm.

Tôi nghĩ rằng có các tập lệnh theo ngôn ngữ cụ thể đi kèm với vim làm những việc như nhận xét các khối mã theo cách phù hợp với ngôn ngữ bạn chọn.

2

Sử dụng Shift + V để chuyển sang chế độ trực quan, sau đó bạn có thể chọn dòng và xóa/thay đổi chúng.

0

v vào chế độ chặn hình ảnh, nơi bạn có thể chọn như thay đổi trong hầu hết các trình soạn thảo phổ biến, sau đó bạn có thể làm bất cứ điều gì bạn có thể làm bình thường lệnh (thay thế: '<,'> s/^/#/để thêm vào một nhận xét chẳng hạn) trong đó '<,'> có nghĩa là khối hình ảnh đã chọn thay vì tất cả văn bản.

4

Bấm V (chữ hoa V)) và sau đó nhấn 40j để chọn 40 dòng và sau đó nhấn d để xóa chúng. Hoặc như @zigdon đã trả lời, bạn có thể nhận xét chúng.

+0

Thao tác này sẽ xóa tổng cộng 41 dòng (dòng đầu tiên và 40 dòng dưới nó). –

4

Chế độ hình ảnh là giải pháp cho vấn đề chính của bạn. Như để bình luận ra các phần của mã, có rất nhiều bổ sung cho rằng trên vim.org, tôi đang sử dụng tComment.vim tại thời điểm này.

Ngoài ra còn có một cách gọn gàng để nhận xét một khối không có plugin.Cho phép nói rằng bạn làm việc trong python và # là ký tự nhận xét. Thực hiện lựa chọn khối hình ảnh của cột bạn muốn đăng nhập băm vào và nhập I # ESCAPE. Để vào chế độ chặn hình ảnh, nhấn C-q trên cửa sổ hoặc C-v trên Linux.

19

Sử dụng điểm đánh dấu.

Đến phía trên cùng của khối văn bản mà bạn muốn xóa và nhập

ma 

bất cứ nơi nào trên dòng đó. Không cần đại tràng.

Sau đó, đi đến tận cùng của khối và nhập như sau:

:'a,.d 

Bước ma đã đặt dấu a cho nhân vật dưới con trỏ.

Lệnh bạn đã nhập sau khi di chuyển đến dưới cùng của khối văn bản nói "từ dòng chứa các nhân vật được mô tả bởi dấu a ('một) vào dòng hiện tại (.) d elete. "

Điều này cũng có thể được sử dụng cho những thứ khác.

:'a,.ya b  - yank from 'a to current line and put in buffer 'b' 
:'a,.ya B  - yank from 'a to current line and append to buffer 'b' 
:'a,.s/^/#/ - from 'a to current line, substitute '#' for line begin 
(i.e. comment out in Perl) 
:'s,.s#^#//# - from 'a to current line, substitute '//' for line begin 
(i.e. comment out in C++) 

N.B.'a (dấu nháy đơn-a) là dòng chứa ký tự được đánh dấu bằng a. `` a (backtick-a) refers to the character marked by a`.

3

Hoặc bạn có thể muốn cung cấp cho kịch bản này là một thử ...

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

+0

NERDCommenter là tốt hơn: nó có nhiều tính năng hơn, phiên bản mới nhất được phát hành vào ngày 30.03.2009 (21.02.2008 để tăng cường và vẫn còn cho vim6), và có sẵn trong kho lưu trữ Gentoo (nhưng cũng có sẵn tính năng nâng cao). – ZyX

16

Để chèn comments chọn các ký tự bắt đầu của các dòng sử dụng CTRL - v (blockwise nhìn, không 'v' nhân vật khôn ngoan-hình ảnh hoặc 'V' linewise-visual). Sau đó, vào chế độ chèn bằng 'I', nhập (các) ký tự nhận xét của bạn trên dòng đầu tiên (ví dụ '#') và cuối cùng thoát ra chế độ bình thường bằng 'Esc'. Thì đấy!

Để xóa nhận xét, hãy sử dụng theo chiều kim đồng hồ để xem các nhận xét và chỉ xóa chúng bằng cách sử dụng 'x'.

+0

Ồ, cảm ơn bạn! Câu trả lời cho vùng nhận xét Esc-x – clintm

+0

Lưu ý rằng vim mặc định được cài đặt với Ubuntu 14.04 (được cài đặt là 'vi') không bao gồm tính năng' visualextra', vì vậy việc chèn khối sẽ không hoạt động ở đó. 'sudo apt-get install vim' mang đến một phiên bản đầy đủ tính năng hơn, trên đó' visualextra' được kích hoạt. Bạn có thể kiểm tra đầu ra của 'vim --version' để xem danh sách đầy đủ các tính năng được kích hoạt. –

3

My khối bình luận kỹ thuật:

Ctrl +V để bắt đầu chế độ trực quan blockwise.

Thực hiện lựa chọn của bạn.

Với lựa chọn vẫn hoạt động, Shift + I. Điều này đưa bạn vào chế độ chèn cột.

Nhập các ký tự nhận xét '#' hoặc '//' hoặc bất kỳ thứ gì.

ESC.

1

phương pháp thông thường của tôi cho ý kiến ​​ra 40 dòng sẽ được đưa con trỏ vào dòng đầu tiên và nhập lệnh:

:., + 40/^/#/

(Đối đây thru 40 dòng phía trước, thay thế bắt đầu-of-line với băm, không gian) Dường như lâu hơn một chút so với một số phương pháp khác được đề xuất, nhưng tôi thích làm những việc với bàn phím thay vì chuột.

0

dấu sẽ là đơn giản nhất mb nơi u muốn bắt đầu và tôi nơi u muốn kết thúc một lần này được thực hiện, bạn có thể làm được khá nhiều bất cứ điều gì bạn muốn

:'b,'ed 

xóa từ marker b để marker e

ý kiến ​​ra 40 dòng bạn có thể làm trong chế độ trực quan

V40j:s/^/#/ 

sẽ nhận xét ra 40 dòng từ nơi u bắt đầu chuỗi

0

Bạn cần phải nhận thức lệnh chế độ bình thường [đếm] CTRL - D. Tùy chọn thay đổi tùy chọn 'cuộn' từ 10 thành [đếm], sau đó cuộn xuống nhiều dòng. Nhấn CTRL - D một lần nữa sẽ cuộn xuống các dòng đó một lần nữa.

Vì vậy, hãy thử nhập

V  "visual line selection mode 
30 "optionally set scroll value to 30 
CTRL-D "jump down a screen, repeated as necessary 
y  " yank your selection 

CTRL-U hoạt động theo cách tương tự nhưng cuộn lên.

2

Nếu bạn muốn thực hiện một hành động trên một loạt các dòng và bạn biết số dòng, bạn có thể đặt phạm vi trên dòng lệnh. Ví dụ, để xóa dòng 20 thông qua 200 bạn có thể làm:

:20,200d 

Để di chuyển đường 20 qua 200 đến nơi dòng 300 là bạn có thể sử dụng:

:20,200m300 

Và vân vân.

2

Đối với ý kiến ​​ra đường, tôi sẽ đề nghị một trong những plugin:

EnhancedCommentify

NERD Commenter

tôi thấy mình sử dụng NERD hơn những ngày này, nhưng tôi đã sử dụng EnhancedCommentify trong nhiều năm.

+0

Điều gì khiến bạn thay đổi từ người đầu tiên sang lần thứ hai? –

+0

NERD dường như được tích cực phát triển hơn, nhưng tôi thực sự thích hành vi của EnhancedCommentify tốt hơn. –

+0

Với tên như NERD ... bạn phải tìm ra ai đó đang chăm sóc nó. – ojblass

1

Câu trả lời đầu tiên hiện tại không đúng? Để nhận xét ra lựa chọn báo chí ':' và gõ lệnh : '<, '> s/^/#/g

(' <,'> - sẽ có mặt ở đó tự động)

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