vi / vim, làm thế nào tôi có thể viết ra một số dòng vào một tệp mới


30

Tôi có một loạt các dòng mà tôi muốn viết ra một tệp khác.
Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


44

Bạn có thể làm

:100,200w filename

Tất nhiên 100.200 là phạm vi các dòng bạn muốn viết.


Là các địa chỉ bao gồm hoặc độc quyền?
Marcin

3
Bao gồm. Cũng bao gồm nếu bạn sử dụng các mẫu :: / ^ cái gì đó /, / ^ khác / w tên tệp hoặc dấu: 'a,' bw tên tệp bao gồm các dòng được đánh dấu 'a' và 'b'.
Bruce Ediger

Xin chào @Bernhard, nếu tôi muốn cắt các dòng từ tệp hiện tại.
Ravi Sevta

19

Tổng quát nhất:

  1. Di chuyển con trỏ đến dòng đầu tiên của nhóm bạn muốn viết. Lượt matiếp theo. Đó là "đặt dấu tên là 'a'".

  2. Di chuyển con trỏ đến dòng cuối cùng của nhóm, nhấn 'm' và 'b'. '

  3. Thay đổi sang chế độ lệnh nhấn: như một chuỗi làm :'a,'b w filenamesau đó nhấn return.

Điều đó sẽ làm việc trong vi, nvi và vim.

Một phương pháp khác, hoạt động trong vim hiện đại hơn:

  1. Đặt con trỏ trên dòng đầu tiên của nhóm các dòng bạn muốn viết ra. Lượt V, cho "bắt đầu khối trực quan của dòng".

  2. Di chuyển con trỏ xuống dưới cùng của nhóm dòng. Vim sẽ nổi bật với video đảo ngược từng dòng.

  3. Chép lại. Nhấn :để đi vào chế độ dòng lệnh. Điều đó sẽ cung cấp cho bạn một dấu nhắc ở dưới cùng của scren trông giống như: :'<,'> Điều đó có nghĩa là từ đầu khối hình ảnh đến cuối. Nhập wvà tên tệp và nhấn return.

Bạn có thể thêm các dòng đơn vào cuối tệp khi bạn cần bằng cách đặt con trỏ lên dòng bạn muốn viết ra sau đó gõ: :.w >> filenamevà nhấn return.

Các lệnh "viết một nhóm các dòng" cũng hoạt động với ">> tên tệp" thay vì chỉ "tên tệp". ">>" khiến vi hoặc vim thêm vào tệp, thay vì chỉ viết nó.


8

Để thêm vào câu trả lời của Bernhard, bạn cũng có thể chọn một khu vực bằng chế độ trực quan và sau đó nhập :w filename.


8

Nếu bạn biết số dòng mà bạn muốn viết, bạn có thể làm điều đó từ dòng lệnh:

vim -c "100,200w new_file.txt" -c wq original_file.txt

1

Một mẹo nhỏ là sử dụng số dòng tương đối. Ví dụ :: + 0, + 99w tên tệp ghi 100 dòng tiếp theo vào tên tệp.


Không ghi đè lên tập tin gốc? OP muốn viết ra một tệp khác.
SabreWolfy

1
@SabreWolfy Không; có thể bạn đã bỏ lỡ 'tên tệp' sau số dòng. Tôi chỉ thử nghiệm phiên bản của anh ấy và nó đã hoạt động.
felwithe
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.