Cách xóa văn bản đã chọn trong trình chỉnh sửa vi


116

Tôi đang sử dụng PuTTY và trình soạn thảo vi. Nếu tôi chọn năm dòng bằng chuột và tôi muốn xóa những dòng đó, tôi có thể làm như thế nào?

Ngoài ra, làm cách nào để tôi có thể chọn các dòng bằng bàn phím như tôi có thể trong Windows, nơi tôi nhấn Shiftvà di chuyển các mũi tên để chọn văn bản? Làm thế nào tôi có thể làm điều đó trong vi?


1
tôi có danh sách người đàn ông in nhưng không thể tìm thấy làm thế nào để xóa các văn bản đã chọn

x Xóa ký tự bên phải con trỏ X Xóa ký tự bên trái con trỏ D Xóa đến cuối dòng dd Xóa dòng hiện tại: d Xóa dòng hiện tại khỏi lagmonster.org/docs/vi.html hy vọng sẽ giúp được một chút
Mawg nói hãy phục hồi Monica vào

1
Câu hỏi VIM về superuser? CƯỜI LỚN!
Pascal Thivent

1
@Pascal: hmm, vâng, bạn nói đúng. Nhân tiện, câu trả lời được định dạng độc đáo. Ồ, và câu hỏi của anh ấy / cô ấy không phải về VIM, mà là về VI. ;)
Marcel Korpel

Câu trả lời:


215

Tôi đang sử dụng PuTTY và trình soạn thảo vi. Nếu tôi chọn năm dòng bằng chuột và tôi muốn xóa những dòng đó, tôi có thể làm như thế nào?

Quên chuột. Để xóa 5 dòng, hãy:

  • Chuyển đến dòng đầu tiên và nhập d5d( ddxóa một dòng, d5dxóa 5 dòng) ~ hoặc ~
  • Shift-vvào chế độ lựa chọn linewise , sau đó di chuyển con trỏ xuống bằng j(có, sử dụng h, j, klđể di chuyển trái , xuống , lên , đúng tương ứng, đó là hiệu quả hơn so với sử dụng các mũi tên) và gõ dđể xóa vùng chọn.

Ngoài ra, làm cách nào để tôi có thể chọn các dòng bằng bàn phím như tôi có thể trong Windows, nơi tôi nhấn Shiftvà di chuyển các mũi tên để chọn văn bản? Làm thế nào tôi có thể làm điều đó trong vi?

Như tôi đã nói, sử dụng Shift-vđể vào chế độ lựa chọn theo chiều thẳng hàng hoặc vvào chế độ chọn theo chiều ký tự hoặc Ctrl-vđể vào chế độ chọn theo chiều khối. Sau đó di chuyển với h, j, kl.

Tôi khuyên bạn nên dành một chút thời gian với Vim Tutor (chạy vimtutor) để làm quen với Vim một cách rất bài bản.

Xem thêm


1
Trên thực tế, vim có hỗ trợ chuột tuyệt vời nếu thiết bị đầu cuối của bạn hỗ trợ nó. Ví dụ: sử dụng gpmdaemon trong bảng điều khiển, hoặc đang chạy xtermhoặc konsoletrong môi trường đồ họa, bạn có thể nói với vim set mouse=a(hoặc thêm nó vào .vimrc của bạn) và chuột có thể được sử dụng để lựa chọn, thay đổi kích thước phân chia, v.v.
Ben Voigt

@Ben Bạn nói đúng, tôi không sử dụng chuột gì cả nhưng điều này không có nghĩa là VIM không thể đối phó với nó (trong một số trường hợp nhất định). Tôi đã thực sự xóa phần không chính xác này khỏi câu trả lời của mình trong khi bạn đang nhập.
Pascal Thivent

Ngoài ra, thực sự khó để biết khi nào chữ V của bạn có viết hoa hay không ... Tôi khuyên bạn nên nói [Shift] + [V] để chọn chế độ dòng.
Ben Voigt

Tôi biết nó được một lúc, nhưng tại sao sử dụng h, j, klsẽ được nhiều hiệu quả hơn bằng cách sử dụng mũi tên? Tôi thấy không có vấn đề gì bằng cách sử dụng các mũi tên và kết quả cuối cùng trông giống nhau. Ngoài ra, các mũi tên được thiết kế đầu tiên cho mục đích đó, vì vậy sự sắp xếp của họ cảm thấy trực quan hơn nhiều (ít nhất là đối với tôi)
Frederico Pantuzza

1
@FredericoPantuzza Tại thời điểm đó, vấn đề là cử động của cánh tay - mục tiêu là luôn giữ ngón tay của bạn trên các phím của hàng chính. Việc phải nhấc cánh tay phải của bạn và trượt nó qua các phím mũi tên để sử dụng chúng sẽ cộng dồn theo thời gian.
AndrewF

59

Làm điều đó theo cách vi.

Để xóa 5 dòng nhấn: 5dd(5 xóa)

Để chọn (thực sự sao chép chúng vào khay nhớ tạm), bạn gõ: 10yy

Nó hơi khó để nắm bắt, nhưng rất hữu ích để học khi sử dụng các thiết bị đầu cuối từ xa đó

Hãy lưu ý các đường cong học tập đối với một số trình chỉnh sửa:


(nguồn: calver tại unix.rulez.org )


31

Nếu bạn muốn xóa bằng số dòng, bạn có thể sử dụng:

:startingline, last line d

Thí dụ:

:7,20 d

Ví dụ này sẽ xóa dòng 7 đến 20.


Tôi đã không được biết về mẹo này cho đến nay. Nó hoạt động như một say mê! Cảm ơn!
Tung

13

Đánh dấu bằng chuột của bạn chỉ làm nổi bật các ký tự trên thiết bị đầu cuối. VI không thực sự nhận được thông tin này, vì vậy bạn phải làm nổi bật khác nhau.

Nhấn 'v' để vào một chế độ đã chọn và sử dụng các phím mũi tên để di chuyển chế độ đó. Để xóa, nhấn x. Để chọn các dòng tại một thời điểm, hãy nhấn shift + v. Để chọn khối, hãy thử ctrl + v. Điều đó tốt cho việc chèn nhiều dòng bình luận vào trước mã của bạn :).

Tôi ổn với VI, nhưng tôi phải mất một thời gian để cải thiện. Bạn tình công việc của tôi đề nghị tôi cheat sheet này . Tôi giữ một bản in trên tường cho những khoảnh khắc kỳ quặc khi tôi quên thứ gì đó.

Chúc bạn hack vui vẻ!


6

Khi sử dụng một thiết bị đầu cuối như PuTTY , thông thường các lần nhấp chuột và lựa chọn không được truyền đến hệ thống từ xa. Vì vậy, vi không có ý tưởng rằng bạn vừa chọn một số văn bản. (Có những ngoại lệ cho điều này, nhưng nói chung các hành động của chuột không được truyền.)

Để xóa nhiều dòng trong vi, sử dụng một cái gì đó như 5ddxóa 5 dòng.

Nếu bạn không sử dụng Vim , tôi sẽ mạnh mẽ khuyên bạn nên làm như vậy. Bạn có thể sử dụng lựa chọn trực quan, nơi bạn nhấn Vđể bắt đầu một khối trực quan, di chuyển con trỏ đến đầu kia và nhấn dđể xóa (hoặc bất kỳ lệnh chỉnh sửa nào khác, chẳng hạn như yđể sao chép).


1
@Justin L.: Sử dụng <kbd>a</kbd>.
Greg Hewgill

1
Cảm ơn! : D Có cái nào nữa trong số này ẩn ở đâu đó không?
Justin L.

1
Putty có khả năng truyền các lệnh của chuột; câu đầu tiên có thể đã lỗi thời.
congusbongus

3

Nếu bạn muốn xóa tất cả các dòng trong một tệp khỏi số dòng hiện tại của mình, hãy sử dụng dG, nó sẽ xóa tất cả các dòng (shift g)có nghĩa là cuối tệp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.