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?

jcora
źródło
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 [email protected]; 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 [email protected] 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.

Mircea Vutcovici
źródło
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://[email protected]/~/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.

Złotowłosa
źródło
+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.

Mikrofon
źródło
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.

VVelev
źródło