Có cách nào để mở tất cả các tệp trong một thư mục từ bên trong Vim không? Vì vậy, một :commandcó hiệu lực sẽ nói "Mở tất cả các tệp trong /some/pathbộ đệm".
Lý tưởng nhất là mở tất cả các tệp dưới một đệ quy dir.
Câu trả lời:
Lệnh bạn đang tìm là args:
Ví dụ:
:args /path_to_dir/*
sẽ mở tất cả các tệp trong thư mục
:tab allđể đưa chúng vào các tab riêng lẻ.
"/path_to_dir/subdir/" Illegal file name). Giải pháp nhanh là chạy lệnh thứ hai argd */để loại bỏ những từ danh sách một lần nữa
:argdo source my_commands_batch.vim
Bạn đã thử chưa
: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 một cách đệ quy.
BIÊN TẬP
Có thể sử dụng ** sẽ mở đệ quy như daf đã đề cập
Một phương pháp không yêu cầu gây rối argslà đặt danh sách tệp vào tệp văn bản, sau đó sử dụng :solệnh để 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 trong .phpmột thư mục nhất định, trước tiên hãy tạo files.txtcó chứa danh sách các tệp, được chèn sẵn 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 tệp lớn, thì việc tạo files.txttệp nhanh chóng là tương đối nhỏ , bằng cách chuyển hướng đầu ra của lstệp, sau đó sử dụng macro vim để thêm sptrước mỗi tên tệp.
Điều này rõ ràng là không thanh lịch bằng cách sử dụng các lệnh argsvà argdo, nhưng các lệnh đó cũng phức tạp hơn rất 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 thậm chí sau 16 năm, tôi vẫn thấy lập trình vim là lạ và phức tạp.
Một cách khác để mở tệp đệ quy
find . -type f -exec vi {} \;
kate **/*(^/)(sử dụng cú pháp zsh globbing) thực hiện những gì cần thiết: mở tệp từ thư mục đã cho một cách đệ quy. Nó không phải là "từ bên trong" và nó hoàn toàn không sử dụng vim, nhưng nó "chưa làm được những gì cần thiết". Hoặc thậm chí kate ~/.vimrc ~/.bashrc. Loại bỏ hoàn toàn “từ withing”, “từ thư mục đã cho” và “đệ quy”, nhưng nó vẫn “thực hiện những gì cần thiết”: mở tệp.
**để đối sánh các tệp một cách đệ quy. Ví dụ:args /path_to_dir/**