Moja praca zwykle polega na korzystaniu z SSH do łączenia się z różnymi komputerami, a następnie z użyciem vima do edycji plików na tych komputerach. Problem polega na tym, że muszę ciągle kopiować mój plik .vimrc. Otwarcie vima i brak jakichkolwiek ustawień jest bardzo denerwujące. Czy można przenosić moje ustawienia vima ze sobą na maszynę bez ręcznego kopiowania go wszędzie?
34
set background=dark
lubset background=light
coś, czego żadna dystrybucja Linuksa nie dotyka i jest całkowicie dyskretna dla użytkownika. </sarcasm>Odpowiedzi:
Czuję twój ból. Mam wszystkie moje pliki ~ /.* rc pod kontrolą wersji (Subversion), działa świetnie, odkąd zacząłem w 1998 roku, używając CVS. Jednym ze sposobów, aby to zrobić, jest sprawdzenie wszystkich takich plików rc, gdy stoisz w katalogu domowym:
W ten sposób pliki konfiguracyjne będą również synchronizowane i aktualizowane na różnych komputerach po uruchomieniu aktualizacji svn.
źródło
Zamiast przenosić plik .vimrc na każdy serwer, na którym musisz pracować, dlaczego nie edytować plików zdalnych z lokalnego vima:
W vim / gvim uruchom:
lub zacznij vim tak:
Spowoduje to otwarcie pliku na miejscu (faktycznie kopiuje plik lokalnie), a kiedy zapiszesz, wyśle on edytowany plik z powrotem na serwer.
Prosi o hasło ssh, ale można je usprawnić za pomocą kluczy ssh.
Jak wspomnieli inni, jedyną wadą tej metody jest to, że nie uzyskuje się rywalizacji o ścieżkę / plik, tak jak w przypadku pracy bezpośrednio na komputerze.
Aby uzyskać więcej informacji, zapoznaj się z poniższym samouczkiem .
źródło
Możesz utworzyć skrypt bash, aby kopiować go automatycznie przy każdym logowaniu, w następujący sposób:
Na przykład możesz to nazwać ssh_vim. To nie jest idealne rozwiązanie, ale rozwiąże problem.
Możesz go ulepszyć, aby najpierw sprawdzić, czy już tam jest. Jeśli nie zawsze uruchamiasz ssh z tego samego komputera, możesz zmienić skrypt, aby pobrać plik z scp z innego komputera.
EDYCJA 1
W powiązanej notatce można również zamontować system plików komputera zdalnego za pomocą sshfs. W ten sposób zyskujesz na swoim środowisku i narzędziach (nie tylko .vimrc) i masz ukończoną powłokę (której nie używasz scp: //).
EDYCJA 2
Właśnie dowiedziałem się, że możesz pobrać swój plik .vimrc za pomocą scp: //, w następujący sposób:
Działa to z wiersza poleceń vim, ale w tej chwili nie wiem, jak to zautomatyzować. Wydaje się, że nie działa ani z przełącznikiem „-u”, ani w .vimrc, ani z $ VIMINIT.
EDYCJA 3
Znalazłem to! Możesz to zrobić, aby uruchomić vima z .vimrc pobranym z twojego zbioru referencji:
Opcja „-c” wykonuje polecenie zaraz po uruchomieniu vima.
Możesz utworzyć alias w wybranej powłoce, aby uniknąć pisania. W bash wyglądałoby to tak:
źródło
Jeśli korzystasz z uwierzytelniania za pomocą klucza publicznego, możesz użyć tego w
~/.ssh/config
:Podoba mi się to lepiej niż sztuczka skryptu sugerowana powyżej, ponieważ nie zakłóca wywołania
ssh
polecenia (przy określaniu dodatkowych parametrów itp.)źródło
%u@%n:
na,%r@%n:
ponieważ nazwa użytkownika ssh różni się od nazwy użytkownika mojego laptopaKilka rozwiązań:
1) Utwórz udział NFS dla swojego folderu domowego i zamapuj go w wielu lokalizacjach.
2) Utwórz mały skrypt, aby wypchnąć plik .vimrc na serwer, z którym się łączysz, za pomocą pliku tożsamości / klucza. Może wyglądać mniej więcej tak (pseudokod):
źródło
Dokładnie taka sama odpowiedź, jak sunny256, ale użyj git zamiast SubVersion.
Zachowaj jeden główny oddział z plikami wspólnymi dla wszystkich komputerów i jeden oddział dla każdego nowego komputera.
W ten sposób możesz mieć prawie takie same pliki na większości komputerów i nadal nie być zdezorientowanym.
źródło
Wiem, że to stary wątek, ale jednym ze sposobów, w jaki to robię, jest użycie sshfs, który montuje system plików na bezpieczniku. Lokalny vim wykonuje całą edycję, więc nie ma powodu, aby kopiować .vimrc.
Ma to tę wadę, że inny terminal będzie musiał być otwarty dla wszelkich poleceń, które muszą być uruchomione na zdalnym serwerze, ale do edycji uważam, że ten sposób jest najlepszy.
Ma również dodatkową zaletę korzystania ze schowka systemowego.
źródło
Używam https://github.com/andsens/homeshick do zarządzania moimi plikami dot i przechowywania ich na github.
Homeshick napisany jest w 100% bash i pomaga zarządzać „zamkami”, które są po prostu repozytoriami git zawierającymi katalog / home /. Ma polecenia, aby przenieść istniejące pliki kropek do repozytorium i zastąpić je dowiązaniami symbolicznymi. I aby dowiązać symbolicznie wszystkie pliki z repozytorium do twojego katalogu domowego na nowym komputerze.
Zatem ogólną ideą jest trzymanie plików dot w systemie kontroli wersji i dowiązanie do nich z prawdziwej ścieżki. W ten sposób Twoje repozytorium nie musi zaczynać się od katalogu domowego i zawierać mnóstwo plików, których nigdy nie chcesz dodawać.
źródło
Jeśli jesteś podobny do mnie i masz wiele maszyn programistycznych (również maszyn wirtualnych) z różnych powodów, możesz łączyć klucze ssh, inteligentny profil bash_profil i wybrany RCS.
Po drugie użyłbym nfs / samaba / sshfs. Jedną z wad jest to, że jeśli nie masz dostępu do sieci przez cały czas, nie możesz uzyskać dostępu do tego, czego potrzebujesz (latanie, brak Wi-Fi, zapory ogniowe, problemy z routingiem itp.). Komputery, które synchronizuję, nie są dostępne jednocześnie, ale chcę udostępnić między nimi informacje.
Oto jak zacząłem pożyczać wiele pomysłów z Internetu.
.bash_profile może mieć coś takiego
Mam to z kilku miejsc, ale nie mogę teraz znaleźć linku do tego. Plik shell_ssh_agent:
Teraz przy pierwszym logowaniu konfigurujesz klucze. Wyloguj się i zaloguj, a to po prostu ułatwiło życie.
Umieść wszystkie skrypty w RCS, co ułatwia synchronizację maszyn programistycznych. Używam git. Uwierzytelnianie za pomocą git odbywa się za pośrednictwem ssh, więc klucze ssh również tutaj pomagają. Zauważ, że w tym momencie mogłeś użyć czegoś takiego jak nfs. Nadal byłbym fanem RCS z powodów, które wymienię poniżej.
Przypadek użycia to
Coś, co chcę wypróbować, to zapakować początkowe dane logowania / ustawienia do pliku makefile, który kopiuję na nowy komputer. Plik makefile może następnie wykonać konfigurację kluczy, RCS itp. Oczywiście jest tu trochę narzutu, ale jeśli zakończysz konfigurowanie wielu maszyn, jest to:
źródło
Używam makefile, który ma listę wszystkich serwerów, na które się loguję, a kiedy dokonam zmiany na moim komputerze lokalnym, „make” jest uruchamiany przy użyciu makefile, który aktualizuje wszystkie serwery za pomocą jakichkolwiek zmian lub wtyczek
źródło
.PHONY.
”sshrc rozwiązuje ten problem. Umieszczasz .vimrc w ~ / .sshrc.d /, a następnie dodajesz
export VIMINIT="let \$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC"
do `/.sshrc.źródło
Napisałem do tego proste narzędzie, które pozwoli ci natywnie transportować plik .vimrc za każdym razem, gdy ssh , przy użyciu wbudowanych opcji konfiguracyjnych SSHd w niestandardowy sposób.
Brak dodatkowych
svn
,scp
,copy/paste
itp wymagane.Jest prosty, lekki i domyślnie działa na wszystkich konfiguracjach serwerów, które testowałem do tej pory.
https://github.com/gWOLF3/viSSHous
źródło
Za pomocą zmiennej VIMINIT:
i przekazanie go do zdalnego serwera:
jest łatwe przy użyciu .bash_profiles lub .bashrc
Teraz spróbuj uruchomić vima na zdalnym serwerze używając sshh do połączenia:
Jeśli chcesz, możesz również zabrać wtyczki na zdalny serwer:
źródło
Mam tę samą sytuację, ale to nie tylko „
.vimrc
”. Też mam takie rzeczyMoje rozwiązanie (rozpoczęte 30 lat temu od „dist” pierwotnie!) Polega na skonfigurowaniu nocnego crona do rsync minimalnej konfiguracji domowej na wszystkich komputerach, na których pracuję, aby aktualizował się co noc.
W ten sposób wszystkie inne maszyny, z którymi pracuję, są na bieżąco! Mogę po prostu dodać nowy komputer do listy „kont” i przeprowadzić dystrybucję jednego komputera, aby go uruchomić.
Nie musi to być wiele, a możesz zacząć od małego i uczynić go bardziej złożonym. Jak możecie sobie wyobrazić po 30 latach, moja dystrybucja jest teraz dość złożona, więc nie umieszczę jej tutaj. Nie trzeba dodawać, że zmienia także konfigurację dla innych sieci, porządki domowe (np. Kosz, pliki pamięci podręcznej), upewnia się, że uprawnienia domowe są prawidłowe i tak dalej.
UWAGA Zezwalam na logowanie ssh bez hasła z jednego komputera domowego do wszystkich pozostałych, nigdy więcej! Każdy cross ssh jest chroniony hasłem.
źródło
Możesz rozważyć skrypt EXPECT, który pozwala ustawić ścieżkę i środowisko (np. Zmienne EXRC) po naciśnięciu określonego klawisza. Nie powinno to potrwać długo, zanim ktoś opublikuje podobny skrypt.
Gdy farmy serwerów zajmują więcej niż kilkadziesiąt (pomyśl tysiące), posiadanie czegoś, co łatwo skonfigurować środowisko na „dziewiczym” polu, jest prawdziwym ratownikiem
Często, gdy loguję się do skrzynki, tworzy mój homedir po raz pierwszy!
źródło
Zostało to zrealizowane za pomocą następującego narzędzia bash oneliner. Ponieważ odbywa się to za pomocą procesu podstawiania, pliki tymczasowe nie są tworzone.
https://gist.github.com/blacknon/a47083f3bbbd0374998bdf7e3b3396cc
źródło