2010-01-07 24 views
82

Có cách nào để mở tất cả các tệp trong một thư mục từ trong Vim không? Vì vậy, một :command sẽ có hiệu lực "Mở tất cả các tệp dưới /some/path vào bộ đệm".Làm cách nào để mở nhiều tệp cùng lúc trong Vim?

Tốt nhất là bạn nên mở tất cả các tệp theo thư mục đệ quy.

Trả lời

101

Lệnh bạn đang tìm kiếm là args:

Ví dụ:

:args /path_to_dir/* 

sẽ mở tất cả các file trong thư mục

+31

Sử dụng '**' để khớp tệp một cách đệ quy. Ví dụ. ': args/path_to_dir/**' – daf

+0

Hoàn hảo. Gracias. – Ethan

+1

Để mở tệp mà không có tiện ích, hãy chỉ định thư mục chính, ví dụ: args ** /. hg/hgrc hoạt động nhưng **/hgrc thì không. – 79E09796

9

Bạn hãy thử

:n /some/path/* 

Nó sẽ mở tất cả các tệp trong/some/path

Tôi không nghĩ rằng nó sẽ mở tập tin đệ quy mặc dù.

EDIT

Có thể sử dụng ** sẽ mở ra một cách đệ quy như daf mentionned

+0

Vâng, điều này cũng hoạt động. – daf

+0

Ý nghĩa của n là gì? Nhìn vào sự giúp đỡ của vim chỉ chỉ cho tôi để "lặp lại các mô hình cuối cùng" .. mà tôi hiểu là tổ hợp phím. Có cách nào để nhận trợ giúp chỉ cho chế độ lệnh không? – U0001

+1

Quá dễ dàng: h: n .. tìm trợ giúp cho ": n". Tôi không thích trả lời các câu hỏi của chính mình;) – U0001

21

Tại sao nó không hoạt động nếu tôi muốn mở tất cả các file có đuôi mở rộng nhất định? Tôi đã thử

:n ./**.cs 

và chỉ mở các tệp trong thư mục hiện tại.

tôi thấy mã đúng answer.The là :n **/*.cs

Để biết thêm thông tin :h find

1

Một cách khác để mở file một cách đệ quy

find . -type f -exec vi {} \; 
+4

Không đáp ứng các hạn chế “từ bên trong Vim”. – ZyX

+0

và chưa thực hiện những gì cần thiết :) –

+3

Nó không. Điều cần thiết là các tệp từ thư mục đã cho đệ quy * từ bên trong vim *. Nếu bạn đang ném đi điều kiện bạn cũng có thể nói rằng 'kate **/* (^ /)' (bằng cách sử dụng cú pháp zsh globbing) hiện những gì là cần thiết: mở tập tin từ thư mục nhất định đệ quy. Nó không phải là "từ bên trong" và nó không sử dụng vim chút nào, nhưng nó "chưa làm cái gì là cần thiết". Hoặc thậm chí 'kate ~/.vimrc ~/.bashrc'. Bỏ qua "từ withing", "từ thư mục nhất định" và "đệ quy" hoàn toàn, nhưng nó "chưa làm những gì là cần thiết": mở tập tin. – ZyX

1

Nếu bạn muốn thêm vào danh sách đối số ;

:arga what_you-d_like_to_add 

thấy

:he arga 

từ/trong vim để biết thêm thông tin.

4

Phương pháp không yêu cầu gây rối với args là đặt danh sách tệp trong tệp văn bản, sau đó sử dụng lệnh :so để chạy các lệnh trong tệp đó. Ví dụ: nếu bạn muốn mở tất cả các tệp kết thúc bằng .php trong một thư mục cụ thể, trước tiên hãy tạo files.txt chứa danh sách tệp, được thêm trước bằng bất kỳ lệnh nào bạn muốn sử dụng để mở chúng.

sp alpha.php 
sp bravo.php 
sp charlie.php 

Sau đó, trong vim:

:so files.txt 

Nếu danh sách các tập tin lớn, đó là tương đối tầm thường để tạo ra các tập tin files.txt một cách nhanh chóng, bằng cách chuyển hướng đầu ra của ls vào một tập tin, và sau đó sử dụng một macro vim để thêm trước sp trước mỗi tên tệp.

Điều này rõ ràng là không thanh lịch như sử dụng các lệnh argsargdo, nhưng các lệnh này cũng phức tạp hơn nhiều.

Cũng có thể có một cách để làm điều này với một lệnh duy nhất trên dòng lệnh, nhưng ngay cả sau 16 năm tôi vẫn thấy lập trình vim là lạ và phức tạp.

+0

Thú vị! Âm thanh như một cách tốt để kiểm soát các tập tin được yêu cầu để mở, thay vì mù quáng mở tất cả các tập tin của một thư mục nhất định nếu các tập tin này không phải là tất cả các yêu cầu. – cram2208

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