2008-10-23 36 views
24

Tôi đã tự hỏi nếu có một cách để xem đầu ra của bất kỳ lệnh nào, thẳng bên trong vim, thay vì chuyển hướng đầu tiên nó vào một tệp và sau đó mở tệp đó.chuyển hướng và vim

E.x. Tôi cần một cái gì đó giống như $ gvim < diff -r dir1/ dir2/

Điều này cho phép nhắn tin không rõ ràng lỗi chuyển hướng

Tôi chỉ muốn xem các diffs giữa dir1 và dir2 thẳng bên gvim.

Có ai có thể cung cấp một bản hack hay không?

Trả lời

4
gvimdiff sử dụng

JST thay
hoặc vimdiff
để dán đầu ra của một lệnh thẳng vào vim, ví dụ ls, hãy thử
:% r ls

+0

Nếu bạn có bí danh trên 'vim' (đối với cài đặt tùy chỉnh, có thể),' vimdiff' sẽ sử dụng vim trên toàn trang web. Bạn có thể sử dụng 'vim -d' (hoặc thiết lập một bí danh khác) để có được hành vi" diff "với vim tùy chỉnh của bạn. –

41
diff file1 file2 | vim -R - 

Các -R làm cho nó Read- chỉ để bạn không vô tình sửa đổi đầu vào (có thể hoặc không thể là hành vi mong muốn của bạn). Dấu gạch ngang đơn cho biết vim đọc đầu vào của nó qua đầu vào chuẩn. Cũng làm việc cho các lệnh khác.

6

vim -d file1 file2

10

Ngoài ra, khi đã có trong Vim:

:r! diff file1 file2 
6

Mặc dù tôi cũng sẽ đề nghị vimdiff hay vim -d đối với trường hợp nhìn vào một diff, tôi chỉ phải chia sẻ này (tổng quát) phương pháp tiếp cận sử dụng vim trong ống: vipe (từ gói moreutils trong Ubuntu).

Ví dụ:

find -name '* .png' | vipe | xargs rm

sẽ cho phép bạn chỉnh sửa đầu tiên (trong vim) danh sách tệp .png được tìm thấy trước khi chuyển đến xargs rm.

2

Bạn có thể làm điều này với

diff -r dir1/ dir2/ | gvim - 

của - 'tùy chọn để vim (hoặc gvim) cho vim để mở STDIN

1

Tôi thường sử dụng vimdiff -g <file1> <file2>

0

Một trong những đơn giản nhất và cách thuận tiện là làm như sau:

vimdiff -R <file1> <file2> 

Một lần nữa cờ '-R' là mở nó cho chế độ chỉ đọc để tránh bất kỳ thay đổi ngẫu nhiên nào.

0

gì bạn đang tìm kiếm được gọi là process substitution:

vim <(diff -r dir1/ dir2/)

Nhưng plugin DirDiff đề cập bởi Luc là nhiều hơn nữa hữu ích để so sánh thư mục.

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