Làm cách nào tôi có thể chèn văn bản vào cuối một nhóm dòng?


15

Giả sử tôi có một khối văn bản ...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

... và tôi muốn chèn một dòng .ở cuối mỗi dòng. Cách tiếp cận tốt nhất sẽ là gì để đạt được điều này?

Câu trả lời:


11

Tôi làm như sau để nối văn bản vào nhiều dòng:

  • <c-V> - Vào chế độ Visual Block.
  • Sử dụng j/ kđể chọn các dòng.
  • $ - Di chuyển con trỏ đến ký tự cuối cùng.
  • A - Nhập chế độ chèn sau ký tự cuối cùng.
  • Chèn văn bản mong muốn.
  • <Esc> - Thoát chế độ chèn và kết thúc khối bổ sung.

Khi so sánh với việc viết :normsau khi lựa chọn thậm chí còn có ít lần nhấn phím hơn, nhưng lý do thực sự khiến tôi sử dụng điều này là do bản năng của tôi hoạt động ở chế độ Visual Block cho loại thay đổi này.


Rất hữu ích kết hợp với dán một cột văn bản .
Paul Rougieux

8

Trên dòng đầu tiên chỉ cần gõ: 4:norm A.

4:tạo một phạm vi cho bạn và sau đó norm A.thêm dấu chấm vào mỗi dòng

Một giải pháp khác cho các đoạn văn dài hơn có thể là: Vip<C-v>$A.<Esc>

Bước đầu tiên là chọn đoạn Vipsau đó bạn thay đổi sang chế độ khối trực quan và di chuyển con trỏ đến cuối mỗi dòng, $sau đó bạn thêm đoạn đó .vào A.và chuyển sang chế độ bình thường <Esc>để xem thay đổi được áp dụng cho từng dòng .


:ALệnh này là gì? Tôi không tìm thấy nó qua:h :A
Peter Rincker

lỗi của tôi. Trong thực tế đã không kiểm tra câu trả lời. Tôi đang cập nhật nó. Nó nên sử dụng lệnh bình thường giống như câu trả lời
@Kritixi Lhitos

Hai nhân vật ít hơn 4:norm A.sẽ là4:s/$/.
Philippos

3

Trước tiên, bạn có thể chọn chúng một cách trực quan bằng cách sử dụng Vvà sau đó sử dụng các phím di chuyển để chọn toàn bộ văn bản (hoặc nếu văn bản đúng là một đoạn bạn có thể làm [bắt đầu từ dòng đầu tiên] V}). Và sau đó gõ :. Điều này sẽ đưa ra một cái gì đó giống như :'<,'>trong dòng lệnh.

:'<'>normal A.

Điều này thực hiện normal A.trên các dòng được chọn. normal A.thực hiện A.như tổ hợp phím chế độ bình thường. Điều này Adành một .phần cuối của mỗi dòng được chọn.


3

Nếu bạn muốn thêm dấu chấm ở cuối tất cả các dòng:

:%norm A.

hoặc bạn có thể sử dụng tìm kiếm và thay thế:

:%s/$/./

% là toàn bộ tệp, $ là cuối dòng


Vì @ vim.ryan đã yêu cầu một khối văn bản thay vì toàn bộ tệp, :1,4s/$/./ thay thế ký tự cuối cùng bằng một dấu chấm trên các dòng từ một đến bốn.
rjt

1

Để làm cho nó tổng quát hơn một chút, bạn có thể ghi lại một macro trên một dòng và sau đó phát lại trên mỗi dòng trong phạm vi được chọn trực quan của bạn.

Ghi một macro vào một thanh ghi (thanh ghi q trong ví dụ này):

qqA.<Esc>q

Sau đó, bạn có thể chọn trực quan các dòng bạn muốn hoạt động:

Vip

Và sau đó phát lại macro của bạn trên mỗi dòng (phạm vi sẽ được tự động điền):

:'<,'>norm @q
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.