2009-08-02 8 views
5

Tôi đang tìm một cách để ánh xạ: lệnh w để khi tôi sử dụng nó, nó sẽ rsync thư mục hiện tại và lưu tệp được đề cập. Lý tưởng nhất, câu trả lời được tạo ra bởi lệnh rsync sẽ được trả về trong vim, nhưng không phải trong tệp hiện tại, mà đúng hơn là một chú giải công cụ hoặc một cái gì đó.VIM: RSync khi lưu

Tôi đã quản lý để đạt được điều này trong TextMate và bây giờ đang tìm cách bắt đầu làm việc với Vim. Tôi đã thử những thứ như: bản đồ w: w |! Rsync. nhưng điều đó dường như không hoạt động (tôi là người mới bắt đầu :))

Tôi đánh giá cao bất kỳ trợ giúp nào.

Xin cảm ơn, Joe

+0

Tại sao bạn không chỉ cần chỉnh sửa tệp từ xa? – innaM

+1

Joe, bạn có thể đăng cách bạn thực hiện điều này trong TextMate không? :) – richardkmiller

Trả lời

8

Bạn có thể móc vào BufWritePost. Tôi không nhớ cú pháp chính xác, nhưng ":he BufWritePost" và ":he autocommand" sẽ giúp bạn.

Bạn thiết lập một cái móc cơ bản như thế này (mô hình phù hợp trên một tập tin, vì vậy bạn có thể làm * .your_extension):

:au BufWritePost * !rsync 

Ngoài ra, cần có một số cách để làm cho nó đệm cục bộ.

5

Nếu bạn muốn giữ bản sao cục bộ, khi đó hàm băm BufWritePost do viraptor đề xuất là đặt cược tốt nhất, nhưng giả sử bạn đã cài đặt plugin netrw (một phần của tệp thời gian chạy Vim mặc định), bạn cũng có thể bắt đầu với:

vim rsync://myrsync_server.com/path 

và chỉ chỉnh sửa tệp như thể địa phương: lưu sẽ cập nhật máy chủ từ xa.

:help rsync 
0

Bạn có thể thiết lập bộ đệm autocommands địa phương để làm điều này (xem: giúp autocmd-buflocal)

này đặt vim để gọi rsync sau mỗi lần viết thư cho bộ đệm.

au BufWritePost,FileWritePost <buffer> silent !rsync -a /path/to/somedir/ [email protected]:/remote/dir/ --exclude=*.sw? 

Một lưu ý là bạn phải đặt một trong các autocommands này cho mỗi tệp bạn chỉnh sửa trong một dự án nhiều tệp. Điều đó trở nên rườm rà và dễ quên thiết lập cho các tệp/bộ đệm mới - tắt khóa học, bạn có thể thiết lập một chế độ tự động bình thường nhưng sau đó bạn đã tắt rsync để ghi vào các tệp không có trong dự án.

Với rsync-over-ssh, điều này hoạt động nếu máy chủ từ xa có thể truy cập qua liên kết độ trễ thấp - và có lẽ không tốt bằng cách viết mỗi bộ đệm từ các bản cập nhật khác cho đến khi rsync hoàn tất. Để làm cho trải nghiệm tốt hơn, tôi khuyên bạn nên

  • Sử dụng lại kết nối SSH sử dụng connection-multiplexing qua kết nối liên tục.
  • Gửi rsync vào nền bằng cách gắn thêm & vào cuối lệnh. YMMV.