2013-12-17 11 views
43

Łączę się ze zdalnym komputerem przy pomocy ssh [email protected]. Kiedy trzeba otworzyć plik w komputerze zdalnym ja, na przykład,Jaki jest najlepszy sposób otwierania plików zdalnych za pomocą emacsa i ssh

emacs /usr/share/nginx/html/index.html

i że otwiera plik w powłoce index.html. Zauważyłem, że niektóre komendy emacs działają, ale inne nie działają. Na przykład C-w nie działa; M-< nie działa. Jak mogę to naprawić i jaki jest najlepszy sposób pracy z emacs i ssh?

Znalazłem this question, ale to mnie bardziej zdezorientowało.

+1

Jakie są przykłady poleceń, które działają? (Czasami na komputerze zdalnym istnieją różne skróty klawiszowe - sprawdź plik .emacs na komputerze zdalnym - , a czasami cały klucz działa inaczej - np. Ekran GNU domyślnie absorbuje część [Ctrl-A polecenia] (http: // /superuser.com/questions/422126/remap-ctrl-a-in-gnu-screen) zanim dotrze do emacs.) – kbshimmyo

+1

C-space, CF, Cg work – Zeynel

+0

Nie mogłem znaleźć pliku .emacs w pilocie maszyna teraz, ale wiem, że nie zrobiłem żadnego nowego klucza w innej maszynie – Zeynel

Odpowiedz

87

Generalnie wolę otwierać pliki zdalne od lokalnej instancji Emacs.

Podczas uruchamiania Emacsa na lokalnej maszynie , otwarcie zdalnego pliku przez ssh nie różni się zbytnio od otwierania jakiegokolwiek innego pliku poza nieznacznie different syntax.

Dla ssh można wpisać C-x C-f. Teraz w minoukładowniku chcesz wpisać /ssh:[email protected]:/path/to/file (Zauważ, że zakończenie zakładki zadziała po rozpoczęciu pisania ścieżki i zwróć uwagę na wiodącą postać /). Zobacz pełną wersję: docs here.

w przykładzie, który będzie:

C-x C-f /ssh:[email protected]:/usr/share/nginx/html/index.html 

Teraz można edytować plików zdalnych przez ssh w Emacs podczas korzystania z lokalną konfigurację i wszystkie zainstalowane pakiety, itp ...

+14

OP może być zainteresowany faktem, że ta funkcja nazywa się: 'tramp' i jest jedną z najbardziej użytecznych rzeczy, jakich kiedykolwiek użyjesz. Kompiluje się nawet zdalnie! – pmr

+0

Działa to świetnie i wszystkie polecenia wydają się działać, ale widzę, że nie pozwolą mi edytować "index.html", ponieważ mówi, że bufor jest tylko do odczytu. Ale mogę edytować ten sam plik, jeśli otworzę na zdalnym komputerze. Nawiasem mówiąc, kiedy otworzyłem plik z 'C-x C-f/ssh: user @ host filename', zapytałem mnie o hasło. – Zeynel

+0

Próbowałem innego pliku z katalogu dokumentów i mogłem go edytować bez problemu. – Zeynel

18

Wystarczy dodać do odpowiedzi powyżej, można napisać skróty do maszyn, których używasz często:

(defun connect-remote() 
    (interactive) 
    (dired "/[email protected]:/")) 

To otworzy dired buf na zdalnej maszynie. Możesz poruszać się po tym buforze , podobnie jak lokalny.

Jeśli skonfigurowałeś klucze ssh do zdalnego komputera, nie musisz nawet wpisywać hasła.

Jeśli masz kilka zdalnych komputerów, możesz nadać każdej rozpoznawalnej nazwie każdej funkcji, np. connect-cupcake, connect-kitkat i użyj pakietu smex do ukończenia.

+0

To jest świetne. Spróbuję tego. Czy masz odpowiedź na pytanie zadane w powyższym komentarzu: mogę edytować ten plik '/ usr/share/nginx/html/index.html', jeśli otworzę go na zdalnym komputerze; ale kiedy otworzę go ssh, 'index.html' jest tylko do odczytu. Dlaczego to? – Zeynel

+0

Zgaduję, że nie łączysz się z użytkownikiem root i zazwyczaj tylko on może napisać do '/ usr/share /'. –

+0

, ale jak mogę się połączyć jako użytkownik root? Próbowałem kilku rzeczy, takich jak 'C-x C-f/sudo ssh: user @ host filename', ale to nie działa. – Zeynel

13

I dodać do @ słupek abo-Abo chodzi o "skróty" -

Użyj Emacsa zakładek. Po prostu otwieraj zakładki, gdy odwiedzasz zdalny plik lub katalog. Następnie użyj C-x r b, aby przejść do zdalnej zakładki, której nazwę podasz (z uzupełnieniem).

Jeśli używasz Bookmark+, to zdalne zakładki są podświetlane specjalnie w *Bookmark List*, dzięki czemu można je łatwiej rozpoznać. Zdalne zakładki, które muszą być dostępne przez su lub sudo (root), są podświetlone inaczej.

Jeśli używasz Dired+, możesz także szybko utworzyć zakładkę do wielu zdalnych plików lub katalogów, odwiedzając ich katalog zdalny w katalogu Dired, zaznaczając je i klikając C-x b. Nie trzeba podawać nazw zakładek; są nazwane po plikach. Nawet jeśli nigdy nie użyjesz tych zakładek do przechodzenia do plików zdalnych, możesz ich użyć z organizacją plików i tym samym operować na ich podzestawach.

Jeśli używasz Icicles, to za każdym razem, gdy użyjesz polecenia, aby przejść do zakładki, możesz zawęzić kandydatów do ukończenia do tych, którzy są zdalni przez naciśnięcie [email protected] podczas ich ukończenia.

3

prosta odpowiedź, która koncentruje się na zdalnym komputerze:

Jeśli mam zamiar zrobić wszystkie moje emacs pracować na komputerze zdalnym, używam

ssh -X [email protected] 

a następnie uruchomić emacsowi w sesji zdalnej, wyświetla się z powrotem na moim komputerze lokalnym. To stare pytanie, ale chciałem rzucić to wszystko dla kompletności. Przyznane są pewne problemy konfiguracyjne xhost/X, ale w wielu sieciach będzie to działać od razu!

1

SSH mode for emacs jest tym, czego szukasz.

Gdy masz go skonfigurować po prostu uruchomić

M-x ssh RET hostname RET 

Następnie pojawi się monit o hasło dwukrotnie (raz dla wiersza poleceń, raz do wczytywania plików).

W większości przypadków można to traktować jak każdą inną powłokę (nieinteraktywną i kilka drobnych różnic, ale to wszystko).

Śledzi katalog, w którym się znajdujesz, więc jeśli chcesz otworzyć plik z katalogu, którego szukasz, automatycznie zaczyna się w prawym katalogu i musisz tylko wpisać nazwę pliku.

Emacs Wiki ma również więcej informacji.

Powiązane problemy