2011-10-21 42 views
6

Tôi hiện đang sử dụng MacVim và tôi muốn in tất cả các tệp trong cây đang hoạt động của mình. Có cách đơn giản để làm điều này, có lẽ sử dụng lệnh hardcopy?Đệ quy in tất cả các tệp từ Vim

+0

': qa' sẽ đóng cửa tất cả các file mở ... Tôi tự hỏi nếu' a' có thể sửa đổi ? –

Trả lời

6

Một cách thuận tiện để thực thi một lệnh cho một nhóm các tập tin là để thu thập danh sách tên của họ, xác định nó như danh sách đối số mới (xem :help arglist), và sau đó lặp lại lệnh trên các tệp đó trong danh sách đối số.

  1. Để thực hiện bước đầu tiên, sử dụng lệnh :args với một ký tự đại diện file phù hợp với mong muốn. Ví dụ:

    :args ./**/* 
    

    đặt danh sách đối số thành tất cả các tệp trong thư mục hiện tại và thư mục con; tương tự,

    :args /tmp/**/*.{c,h} 
    

    chọn tất cả .c.h file trong /tmp và thư mục con của nó. Để biết chi tiết về cú pháp ký tự đại diện, hãy xem :help wildcard.

    Nếu đường dẫn đến thư mục gốc của một cây con chứa các file để in không rõ trước và được xây dựng bởi một kịch bản, sử dụng lệnh

    :exe 'args' join(map(split(glob(p . '/**/*'), '\n'), 'fnameescape(v:val)')) 
    

    nơi biến p là vụ phải chứa tên đường dẫn của rằng thư mục gốc.

  2. Đối với việc gửi tập tin trong danh sách đối số tới máy in, thực hiện lệnh :hardcopy cho các tập tin bằng cách sử dụng lệnh :argdo,

    :argdo hardcopy! 
    

    Các ! specifier ngăn chặn hộp thoại modal để lựa chọn in tham số.

    Một lệnh phức tạp hơn có thể được sử dụng để in từng tệp thành tài liệu PostScript riêng nằm trong cùng thư mục với tệp đó.

    :argdo hardcopy! >%:p.ps 
    

    Đây là tên của một tập tin in được nối với .ps suffix để có được tên của một tập tin PostScript tương ứng (xem :help cmdline-special).

    Để tăng tốc lệnh :argdo -argument, Vim bỏ qua Syntax sự kiện tự động bằng cách thêm nó vào danh sách eventignore. Điều này có nghĩa rằng nếu Syntax autocommands đã không được chạy cho một tập tin trong danh sách đối số trước khi lệnh :hardcopy:argdo ne, các tương ứng tài liệu in sẽ không có một cú pháp nổi bật (trong trường hợp syntax:y bộ trong printoptions). Để thực thi Syntax tự động đối với tất cả các tệp trong danh sách đối số, trước tiên hãy sử dụng lệnh sau đây.

    :argdo set ei-=Syntax | do Syntax 
    

    Để làm điều này trong thời gian tương tự như in ấn, nối các lệnh:

    :argdo set ei-=Syntax | do Syntax | hardcopy! >%:p.ps 
    
+0

Như thường lệ, kỹ lưỡng hơn – sehe

+0

Cảm ơn các bạn đã trả lời câu hỏi. Những công việc này. –

+0

@ib. Theo dõi câu hỏi này. Tôi dường như không thể làm nổi bật cú pháp để làm việc khi tôi sử dụng lệnh này. Từ những gì tôi có thể nói, nó làm điều đó cho cái đầu tiên nhưng không cái nào trong số những cái tiếp theo nó in ra PostScript. Tự hỏi, tại sao vậy? Tôi đã thử 'đặt printoptions = cú pháp: y" 'trong vimrc của tôi nhưng dường như không làm các trick –

3

Chỉnh sửa Xin lỗi, tôi đã hiểu lầm trước đó.

Để in tất cả, nói php và C# tập tin trong thư mục làm việc của bạn:

:args ./*.{cs,php} **/*.{cs,php} 
:argdo ha 
+0

Đơn giản chỉ cần ': args **/*. {Cs, php}' sẽ làm điều đó, IIRC. – fachexot

Các vấn đề liên quan