Jak mam edytować pliki w sieci za pomocą Vima?


13

Obecnie robię to przez SSHing na serwerze i uruchamianie Vima na serwerze. Ma to tę zaletę, że nie musi zajmować się uciążliwą składnią otwierania plików ze zdalnego serwera przez SCP, a co ważniejsze, jest w stanie naprawdę szybko poruszać się po systemie plików serwera. Z drugiej strony ma opóźnienie, co utrudnia edycję.

Jaki jest kanoniczny sposób edycji wielu zdalnych plików?


6
Dokładnie jak to robisz.
Ignacio Vazquez-Abrams

Jeśli vimwystępuje opóźnienie, prawdopodobnie oznacza to problem z siecią, a nie z przepływem pracy.
Joseph R.

ssh root@myvps.com; vim / etc / somefile - loguję się, a następnie
odpalam

Właściwie to z siecią. Kiedy nacisnę klawisz, musi wysłać pakiet z Europy do USA, gdzie aktualnie używana jest instancja Vima.
jcora

Możesz także zrobić ssh root@myvps.com vim /etc/somefile(zwróć uwagę na brak ;).
terdon

Odpowiedzi:


26

Możesz użyć SSHFS do zamontowania zdalnego domu w folderze lokalnym. Ma tę zaletę, że korzysta z bieżącej infrastruktury i ma małe opóźnienie lokalnego vima.


1
najlepszy sposób imo. nie tylko małe opóźnienie, ale tylko konieczność utrzymania jednego vimrc
exussum

20

Możesz edytować zdalnie za pomocą lokalnego vima lub gvima.

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

scpjest protokołem bezpiecznego kopiowania . Uwierzytelnia się w ten sam sposób ssh, więc klucz ssh musi być dostępny itp. Obsługiwane są różne inne protokoły (patrz :help netrw-externapp), ale scp jest prawdopodobnie najłatwiejszy, jeśli już używasz ssh w tym samym miejscu.

Możesz przeglądać katalogi w ten sposób, po prostu upewnij się, że ścieżka kończy się na /. W przeciwnym razie vim zamieni go w nowy plik.

:wautomatycznie zapisuje plik przez scp. Jeśli z jakiegoś powodu zapis się nie powiedzie, powinieneś to zauważyć, ponieważ będą to coś w rodzaju „powłoki zwróciło 1” na pasku stanu. Uważaj jednak: jeśli tego nie zauważysz, vim nie wie i może to mieć konsekwencje - na przykład, jeśli teraz rzucisz, to cię nie ostrzeże. Szczególnie łatwo jest tego przeoczyć, jeśli :waczęsto się używa ; To jedyne zastrzeżenie, jakie mam.

Aby uzyskać oficjalne dokumenty, patrz :help netrw.


+1 Właśnie miałem to napisać. Netrw wtyczki (która jest zazwyczaj instalowany domyślnie) posiada szeroką gamę sposobów odczytu plików zdalnych.
Greg Hewgill

Odniosłem się do tej opcji, gdy powiedziałem: „Ma to tę zaletę, że nie musi zajmować się uciążliwą składnią otwierania plików ze zdalnego serwera przez SCP, a co ważniejsze, jest w stanie naprawdę szybko nawigować po systemie plików serwera” W ten sposób wydaje mi się bardzo ograniczony.
jcora

1
Aby być uczciwym, twoje pytanie pierwotnie nie wspominało o „zdalnym serwerze przez SCP”, który został później edytowany.
Greg Hewgill

@GregHewgill: Dzięki za tę notatkę, ponieważ jestem trochę zaskoczony - jest to najprostsza i najprostsza metoda do celów ogólnych (bez obrazy dla SSHFS!). Jeśli dołączanie adresu URL do ścieżki do pliku jest dość kłopotliwe, jestem ciekawy, w jaki sposób wykonywane zadanie faktycznie wymaga, aby ktoś usiadł z redaktorem, aby to zrobić ... szczególnie. ponieważ możesz po prostu strzałki w górę polecenia. Ale każdemu z nich.
goldilocks

@GregHewgill tak, wiem, napisałem pytanie na swoim telefonie podczas przeprowadzki, więc niechcący zostawiłem kilka rzeczy. złotowłosa, cały czas otwieram i zamykam pliki. Nawiguj także po systemie plików i stamtąd otwórz. Dołączenie ścieżki + adresu URL było bardziej kłopotliwe niż po prostu „bycie tam”.
jcora

2

Użyłbym rsync. Przenosi tylko to, co się zmieniło. Tak jak:

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

następnie edytuj pliki lokalnie we własnym zakresie. Zero lag. Możesz sprawdzić wszystkie pliki przed ich zatwierdzeniem:

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

Zakładam, że najpierw tworzysz lokalny katalog i cddo tego. Możesz także sprawić, że poradzi sobie z usuwaniem plików, ale bądź bardzo ostrożny, ponieważ wykonanie tego w niewłaściwym katalogu może spowodować uszkodzenie całego drzewa katalogów.

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

To, co robię, to najpierw uruchamiam go w „trybie suchym”, używając flagi „n”:

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

Zgłosi to, co by zrobił, gdyby to było naprawdę. Jeśli jestem zadowolony ze zgłoszonej listy, uruchamiam ją ponownie i usuwam flagę „n”.

rsync jest bardzo wydajny. Istnieją również inne flagi. Jest dość wyrafinowany.


0

Być może zostałeś nazwany najwłaściwszym sposobem - sposobem SSH, ale nadal w zależności od charakteru edytowanych plików, możesz przydzielić małą partycję, udostępniając ją i umieszczając tam pliki, oczywiście jeśli polityka bezpieczeństwa zezwala na to działanie. W przypadku tej sugestii możesz użyć NFS lub Samby najłatwiej, ale nadal edytowanie pliku testowego jest ogólną koncepcją w systemie UNIX i być może będziesz musiał zachować go tak, jak obecnie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.