Tôi phải chỉnh sửa tập tin trên mạng bằng Vim như thế nào?


13

Hiện tại tôi đang làm điều đó bằng cách SSH vào máy chủ và thực thi Vim trên máy chủ. Điều này có lợi ích là không phải đối phó với cú pháp rườm rà khi mở tệp từ máy chủ từ xa qua SCP và quan trọng hơn là có thể thực sự nhanh chóng điều hướng hệ thống tệp của máy chủ. Mặt khác, nó có độ trễ, khiến cho việc chỉnh sửa trở nên khó khăn.

Cách chỉnh sửa rất nhiều tập tin từ xa là gì?


6
Chính xác là bạn đang làm điều đó như thế nào.
Ignacio Vazquez-Abrams

Nếu vimbiểu hiện độ trễ, điều này có thể chỉ ra một vấn đề với mạng của bạn chứ không phải là quy trình làm việc của bạn.
Joseph R.

ssh root@myvps.com; vim / etc / somefile - Tôi đăng nhập, và sau đó kích hoạt Vim
jcora

Trên thực tế, đó là với mạng. Khi tôi nhấn một phím, nó phải gửi một gói từ Châu Âu đến Mỹ, nơi phiên bản Vim tôi đang sử dụng đang thực sự chạy.
jcora

Bạn cũng có thể làm ssh root@myvps.com vim /etc/somefile(lưu ý sự vắng mặt của ;).
terdon

Câu trả lời:


26

Bạn có thể sử dụng SSHFS để gắn kết một ngôi nhà từ xa trong một thư mục cục bộ. Có lợi thế của việc sử dụng cơ sở hạ tầng hiện tại và độ trễ thấp của vim cục bộ.


1
cách tốt nhất imo. không chỉ độ trễ thấp mà chỉ phải duy trì một vimrc
exussum

20

Bạn có thể chỉnh sửa từ xa với một vim hoặc gvim cục bộ.

:e scp://me@someplace.else/~/myfiles/whatever.file

scplà một giao thức sao chép an toàn . Nó xác thực giống như ssh, vì vậy khóa ssh của bạn cần phải có sẵn, v.v ... Có nhiều giao thức khác được hỗ trợ (xem:help netrw-externapp ) nhưng scp có thể là dễ nhất nếu bạn đang sử dụng ssh đến cùng một vị trí.

Bạn có thể duyệt các thư mục theo cách này, chỉ cần đảm bảo đường dẫn kết thúc bằng a /. Nếu không thì vim biến nó thành một tập tin mới.

:wtự động ghi tập tin qua scp. Nếu việc ghi không thành công vì một số lý do, bạn nên chú ý, vì chúng sẽ là một loại "shell return 1" trong thanh trạng thái. Tuy nhiên, hãy cẩn thận: nếu bạn không chú ý, vim không biết và điều đó có thể gây ra hậu quả - ví dụ: nếu bạn bỏ việc bây giờ, nó sẽ không cảnh báo bạn. Đặc biệt dễ bỏ lỡ điều này nếu bạn sử dụng :wanhiều; | Đó là sự cảnh báo duy nhất tôi có.

Đối với các tài liệu chính thức, xem :help netrw.


+1 Tôi vừa mới viết cái này. Các Plugin netrw (mà thường được cài đặt theo mặc định) có một loạt các cách để đọc các tập tin từ xa.
Greg Hewgill

Tôi đã đề cập đến tùy chọn này khi tôi nói: "Điều này có lợi khi không phải đối phó với cú pháp rườm rà khi mở tệp từ máy chủ từ xa qua SCP, và quan trọng hơn là có thể thực sự nhanh chóng điều hướng hệ thống tệp của máy chủ" Cách này dường như rất hạn chế với tôi
jcora

1
Để công bằng, câu hỏi của bạn ban đầu không đề cập đến "máy chủ từ xa trên SCP", mà đã được chỉnh sửa sau đó.
Greg Hewgill

@GregHewgill: Cảm ơn bạn vì lưu ý đó vì tôi hơi khó hiểu - đây là phương pháp đơn giản và đơn giản nhất cho các mục đích chung (không vi phạm SSHFS!). Nếu việc thêm URL vào một filepath tương đối cồng kềnh, tôi tò mò về cách thực hiện nhiệm vụ thực sự đòi hỏi ai đó phải ngồi xuống với một biên tập viên để thực hiện nó ... đặc biệt. vì bạn chỉ có thể lên mũi tên lệnh. Nhưng để mỗi riêng của họ.
goldilocks

@GregHewgill vâng, tôi biết, tôi đã viết câu hỏi trên điện thoại của mình trong khi di chuyển nên tôi đã bỏ quên một số thứ vô tình. goldilocks, tôi mở và đóng tập tin mọi lúc. Điều hướng hệ thống tập tin quá và mở từ đó. Việc thêm một URL + đường dẫn còn cồng kềnh hơn là chỉ "ở đó".
jcora

2

Tôi sẽ sử dụng rsync. Nó chỉ chuyển những gì đã thay đổi. Thích như vậy:

rsync -e ssh -va remoteuser@remotehost:remotedir .

sau đó chỉnh sửa các tập tin cục bộ một cách thoải mái. Không độ trễ. Bạn có thể kiểm tra tất cả các tệp trước khi bạn cam kết chúng:

rsync -e ssh -va . remoteuser@remotehost:remotedir

Tôi giả sử bạn đầu tiên tạo thư mục địa phương của bạn và cdvào đó. Bạn cũng có thể làm cho nó xử lý việc loại bỏ các tệp, nhưng hãy thực sự cẩn thận với điều đó, bởi vì thực thi trong thư mục sai có thể làm hỏng toàn bộ cây thư mục.

rsync -e ssh -va --delete . remoteuser@remotehost:remotedir

Những gì tôi làm là trước tiên tôi chạy nó trong "chế độ khô", sử dụng cờ 'n', như vậy:

rsync -e ssh -van --delete . remoteuser@remotehost:remotedir

Nó sẽ báo cáo những gì nó sẽ làm, nếu nó là thật. Nếu tôi hài lòng với danh sách được báo cáo, tôi sẽ chạy lại và xóa cờ 'n'.

rsync rất hiệu quả. Có nhiều cờ khác nhau là tốt. Nó khá tinh vi.


0

Có thể bạn được đặt tên theo cách thích hợp nhất - cách SSH, nhưng vẫn tùy thuộc vào bản chất của các tệp được chỉnh sửa, bạn có thể phân bổ một phân vùng nhỏ, làm cho nó được chia sẻ và đặt các tệp ở đó, tất nhiên nếu chính sách bảo mật cho phép hành động này. Đối với đề xuất này, bạn có thể sử dụng NFS hoặc Samba một cách dễ dàng nhất, nhưng vẫn chỉnh sửa tệp kiểm tra là một khái niệm chung trong UNIX và có thể bạn phải giữ nó theo cách bạn làm hiện tại.

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.