Trong vi / vim, làm cách nào để thêm vào một tệp thay vì ghi đè lên nó?


10

Tôi biết tôi có thể viết vào một tập tin bằng cách đơn giản là làm :w <file>. Tôi muốn biết mặc dù làm thế nào tôi có thể ghi vào một tệp bằng cách nối thêm vào nó thay vì ghi đè lên nó.

Ví dụ sử dụng trường hợp: Tôi muốn lấy một số mẫu từ tệp nhật ký sang tệp khác. Để đạt được điều đó hôm nay tôi có thể làm:

  1. Mở tệp nhật ký
  2. Chọn một số dòng với Shift+v
  3. Viết vào một tập tin: :w /tmp/samples
  4. Chọn thêm một số dòng với Shift+v
  5. Nối /tmp/samplesvới:w !cat - >> /foo/samples

Thật không may, bước 5 dài, xấu và dễ bị lỗi (thiếu a >khiến bạn mất dữ liệu). Tôi hy vọng Vim có một cái gì đó tốt hơn ở đây.


3
Nếu bạn quan tâm đến việc sử dụng Vim tốt hơn, hãy kiểm tra trang web chị em Vi và Vim .
muru

Câu trả lời:


25

Từ :h :w:

                                                :w_a :write_a E494
:[range]w[rite][!] [++opt] >>
                        Append the specified lines to the current file.

:[range]w[rite][!] [++opt] >> {file}
                        Append the specified lines to {file}.  '!' forces the
                        write even if file does not exist.

Vì vậy, nếu bạn đã chọn văn bản bằng chế độ trực quan, chỉ cần làm :w >> /foo/samples( :'<,'>sẽ được tự động chuẩn bị trước). Nếu bạn bỏ lỡ một >, Vim sẽ phàn nàn:

E494: Use w or w>>

Điều này là hoàn hảo :) Không có gì giống như đọc các tài liệu. Không biết về :hmặc dù. Sẽ sử dụng nhiều hơn
Bruno Polaco

1
@BrunoPolaco :hchỉ là viết tắt cho :help. Bắt đầu với :help helphelp? : D
muru

0

Xác định hàm:

fun! App(filename)
    exec "w !cat - >> " . shellescape(a:filename)
endfunc

Gọi một chức năng:

call App('/foo/samples')
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.