Làm cách nào để mở tất cả các tệp trong thư mục hiện tại và tất cả các thư mục con bằng vim?


8

Cho đến nay tôi đã sử dụng vim */**dường như để mở tất cả các tệp trong thư mục con nhưng không phải là tệp trong thư mục hiện tại và vim *mở tất cả các tệp trong currentthư mục. Nhưng làm thế nào để tôi mở tất cả các tệp trong thư mục hiện tại tất cả các thư mục con?

Câu trả lời:


8

Với zsh:

vim ./**/*(.)

Vỏ khác:

find . \( -name '.?*' -prune \) -o -type f -exec vim {} +

Để chỉ mở các tệp thông thường (không ẩn) (không phải thư mục, liên kết tượng trưng, ​​đường ống, thiết bị, cửa ra vào, ổ cắm ...).

vim ./**/*(D-.)

Các shell khác, GNU find:

find . -xtype f -exec vim {} +

Để cũng mở các tệp ẩn (và duyệt qua các thư mục ẩn) và liên kết tượng trưng đến các tệp thông thường.

Và:

vim ./***/*(D-.)

vỏ khác:

find -L . -type f -exec vim {} +

để đi qua các liên kết tượng trưng khi nhìn vào thư mục con.

Nếu bạn chỉ muốn một cấp thư mục con:

vim ./* ./*/*

Lưu ý rằng đó là một thói quen tốt để thêm tiền tố ./vào trong trường hợp một số tên tệp bắt đầu bằng -hoặc +.

(tất nhiên findnhững cái đó cũng hoạt động zsh. Lưu ý rằng chúng có thể chạy một số trường hợp vimnếu danh sách các tệp lớn).


1

Trong bash với shopt -s extglob:

for file in **/**; do [[ -f "$file" ]] && vim "$file"; done

Lưu ý rằng, theo nhận xét của Stéphane , trước Bash 4.3, điều này sẽ theo bất kỳ liên kết tượng trưng nào trong các thư mục được đề cập.


1
Điều đó chạy một vimcho mỗi tập tin mặc dù. Lưu ý rằng bash trước 4.3 được sử dụng để duyệt qua các liên kết tượng trưng với **. Nó đã được sửa trong 4.3.
Stéphane Chazelas

@ StéphaneChazelas Có phải một vim cho mỗi tệp xấu mỗi se (giả sử chúng ta đang nói về một số tệp, thay vì vài trăm)? Cảm ơn bạn đã lưu ý về các liên kết tượng trưng: Tôi sẽ chỉnh sửa nó trong.
jasonwryan
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.