Vim: Làm thế nào để chèn trong chế độ khối trực quan?


145

Làm thế nào bạn có thể chèn khi bạn ở chế độ khối trực quan (bằng cách nhấn ctrl-V) trong Vim?


4
bản sao có thể có của VIM Blockwise Chèn
Conner

1
TÓM TẮT NHANH CHÓNG TRẢ LỜI: Tôi sẽ chỉ trả lời ở đây dưới dạng đơn giản. Có rất nhiều ý kiến, rằng chủ đề này đang chết đuối. 1) Kiểm tra xem bạn đã bật + visualextra trong phiên bản Vim của mình chưa, bằng cách nhập: ver in Vim. 2) Trước tiên, bạn chèn bằng cách đánh dấu nội dung bạn muốn chỉnh sửa và sau đó nhấn I (chữ i) - chữ thường tôi sẽ không hoạt động. 3) Khi bạn thực hiện điều đó, có thể bạn sẽ chỉ chèn vào dòng đầu tiên, nhưng khi bạn hoàn thành, sau đó nhấn ESC và j, sau đó văn bản được sao chép sang các dòng khác. Đó là cách nó đi với tôi.
Zeth

Câu trả lời:


202

Thử cái này

Sau khi chọn một khối văn bản, nhấn Shift+ ihoặc viết hoa I.

Chữ thường isẽ không hoạt động.

Sau đó nhập những thứ bạn muốn và cuối cùng để áp dụng nó cho tất cả các dòng, nhấn Eschai lần.




Nếu nó không hoạt động ...

Kiểm tra xem bạn đã +visualextrakích hoạt phiên bản Vim chưa.

Bạn có thể làm điều này bằng cách nhập :vervà cuộn qua danh sách các tính năng. (Bạn có thể muốn sao chép và dán nó vào bộ đệm và thực hiện tìm kiếm gia tăng vì định dạng là số lẻ.)

Kích hoạt nó nằm ngoài phạm vi của câu hỏi này nhưng tôi chắc chắn bạn có thể tìm thấy nó ở đâu đó.


13
Đừng quên Aquá!
jmdeldin

42
Bạn cũng phải nhấn esc để thoát chế độ chèn trước khi văn bản sẽ được sao chép.
Brandon Joyce

19
Có ai từng thấy điều này không hoạt động? Tôi có một thiết lập vim không được sửa đổi trên CentOS. Tôi nhấn ctrl + v, nhấn ja vài lần và tôi thấy con trỏ tô sáng ký tự đầu tiên của một vài dòng. Tôi nhấn shift + i. Con trỏ được di chuyển đến ký tự đầu tiên của dòng đầu tiên, nhưng tôi trở lại chế độ bình thường. Tôi biết điều này bởi vì nếu tôi nhấn "a", nó sẽ di chuyển nhân vật sang bên phải và nó nói "- CHERTN -". Nếu tôi gõ một vài ký tự và nhấn thoát, nó sẽ không được áp dụng cho các dòng khác.
Tyler Collier

2
@TylerCollier Tôi đang gặp sự cố trên Ubuntu 14.04 trên Digitalocean. Hãy bình luận nếu bạn đã tìm thấy một giải pháp.
Zack Burt

2
@ZacharyBurt Vim mặc định được cài đặt với Ubuntu 14.04 (được cài đặt dưới dạng vi) không bao gồm visualextratính năng này, vì vậy, khối chèn sẽ không hoạt động ở đó. sudo apt-get install vimmang đến một phiên bản đầy đủ tính năng hơn, trên đó visualextrađược kích hoạt. @TylerCollier Đây cũng có thể là vấn đề tương tự khi cài đặt CentOS của bạn: 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.
Gabriel Grant

40
  1. nhấn ctrl và v // bắt đầu chọn
  2. nhấn shift và i // sau đó nhập bất kỳ văn bản nào
  3. nhấn esc esc // nhấn esc hai lần

Sau khi nhấn ctrl + v, bạn có thể nhấn jđể nhanh chóng chọn (các) dòng bên dưới vị trí hiện tại hoặc nhấn kđể nhanh chóng chọn (các) dòng bên trên vị trí hiện tại. Bạn cũng có thể sử dụng shiftkhóa có uphoặc downlỗi để thực hiện lựa chọn.
tyler.frankenstein

1
Trong tất cả các câu trả lời, đây là người duy nhất làm việc cho tôi. Tôi đang sử dụng mac cài đặt brew
Daniel Kaplan

Tôi đã phàn nàn trong nhiều năm qua mà tôi không thể dễ dàng i nsert (như c Hange) trong khối chọn. Vì vậy, đó là với một thủ đô i, tôi ngạc nhiên. Tôi đã sử dụng :normal iINPUT<CR>để nhập liệu ở đầu dòng. Cảm ơn một bó cho điều này!
Tim Visée

Tôi không nghĩ bạn cần nhấn esc hai lần. Nếu bạn nhấn bất cứ thứ gì sau esc, nó sẽ tự động cập nhật văn bản. Nếu không, nó sẽ làm điều đó trong khoảng nửa giây hoặc lâu hơn.
Shahbaz

29

Bạn cũng có thể có một trường hợp sử dụng mà bạn muốn xóa một khối văn bản và thay thế nó.

Như thế này

Hello World
Hello World

Bạn có thể chọn khối trực quan trước "W" và nhấn Shift+ i- Gõ "Cool" - Nhấn ESCvà sau đó xóa "World" bằng cách chọn khối trực quan.

Ngoài ra, cách hay hơn để làm điều đó là chỉ cần khối trực quan chọn "Thế giới" trong cả hai dòng. Nhập ccho change. Bây giờ bạn đang ở insertchế độ. Chèn những thứ bạn muốn và nhấn ESC. Cả hai đều được phản ánh với tổ hợp phím ít hơn.

Hello Cool 
Hello Cool

Bước cuối cùng là hữu ích cho tôi, bạn phải nhấn ESCsau đó tất cả các dòng được đánh dấu sẽ hiển thị char mà bạn nhập.
Webb Lu

công cụ tuyệt vời, nó sẽ giúp rất nhiều
prosti

9

nếu bạn muốn thêm văn bản mới trước hoặc sau cột màu đã chọn:

  • nhấn ctrl + v
  • chọn cột
  • nhấn shift + i
  • viết văn bản của bạn
  • nhấn esc
  • nhấn "jj"

2
Tank bạn, jjđể tuyên truyền những thay đổi cho tất cả các dòng dưới đây là chút cuối cùng tôi bị thiếu!
kilogic

jjlà một kẻ giết người!
Anh Trần
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.