2013-12-17 5 views
43

ssh [email protected]でリモートマシンに接続しています。私は、例えば、emacsとsshでリモートファイルを開く最も良い方法は

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

、私は、リモートマシンにファイルを開く必要があり、それはシェルでindex.htmlファイルを開くと。私は、いくつかのemacsコマンドは動作するが、他のコマンドは動作しないことに気づいた。たとえば、C-wは機能しません。 M-<は機能しません。どうすればこの問題を解決できますか、emacsとsshを使って作業する最良の方法は何ですか?

私はthis questionを見つけましたが、それは私をもっと混乱させました。

+1

動作しないコマンドのいくつかの例は何ですか? (リモートマシン上に異なるキーバインディングが存在する - リモートマシン上の.emacsファイルをチェックする - )キーの全部が異なる場合があります。たとえば、デフォルトでGNU画面は[コマンドのCtrl-A部分] /superuser.com/questions/422126/remap-ctrl-a-in-gnu-screen) – kbshimmyo

+1

C-space、CF、Cg work – Zeynel

+0

リモートで.emacsファイルが見つかりませんでした今はマシンですが、私は他のマシンに新しいキーバインディングを作成していないことを知っています – Zeynel

答えて

87

私は一般に、ローカルのEmacsインスタンスからリモートファイルを開く方が好きです。

ローカルマシンでEmacsを実行しているときに、ssh経由でリモートファイルを開くことは、わずかにdifferent syntax以外のファイルを開くこととほとんど変わりません。

sshの場合、C-x C-fと入力できます。現在、ミニバッファでは、/ssh:[email protected]:/path/to/fileと入力します(パスの入力を開始するとタブの補完は機能します)。先頭には/という文字もあります。完全なdocs hereを参照してください。あなたの例では

、それは次のようになります。

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

あなたのローカル設定し、任意のインストールされたパッケージを使用している今、あなたはちょうど追加する...など、Emacsの中のssh上

+14

OPは、この機能が「tramp」と呼ばれていることに興味があります。これはあなたが今まで使っている最も有用なものの1つです。リモートでコンパイルできます。 – pmr

+0

これはうまく動作し、すべてのコマンドが動作するように見えますが、バッファが読み取り専用であるため、 'index.html'を編集することはできません。しかし、リモートコンピュータで開くと同じファイルを編集できます。ちなみに、 'C-x C-f/ssh:user @ host filename 'でファイルを開いたとき、パスワードを尋ねました。 – Zeynel

+0

Documentsディレクトリから別のファイルを試してみましたが、問題なく編集できました。 – Zeynel

18

をリモートファイルを編集することができます

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

これはdired BUFを開きます:上記の答えに、あなたが 頻繁に使用するマシンのショートカットを作成することができますリモートマシン上で実行します。このバッファーは、ローカルの場合と同じように をナビゲートすることができます。

リモートマシンのsshキーを設定している場合は、パスワードを入力する必要はありません。

複数のリモートマシンをお持ちの場合は、それぞれの機能にわかりやすい名前 を付けることができます。 connect-cupcakeconnect-kitkat、完了のためにsmexパッケージを使用してください。

+0

これは素晴らしいことです。私はそれを試してみます。私が上記のコメントで尋ねた質問に対する回答もありますか?リモートマシンでこのファイルを開くと、このファイル '/ usr/share/nginx/html/index.html'を編集できます。しかし、sshで開くと、 'index.html'は読み取り専用です。どうしてこれなの? – Zeynel

+0

私はrootユーザーと接続していないと思っていますが、通常は '/ usr/share /'に と書くことができます。 –

+0

rootユーザーとしてどのように接続すればよいですか?私は 'C-x C-f/sudo ssh:user @ host filename'のようなものをいくつか試しましたが、うまくいきません。 – Zeynel

13

そして、ABO-ABO "ショートカット" についてのポスト@に追加する -

使用Emacsのしおり。リモートファイルやディレクトリにアクセスしたときに、ブックマークを通常どおり作成します。次に、C-x r bを使用して、リモートブックマークに移動します。完了した名前のリモートブックマークにジャンプします。

Bookmark+を使用すると、リモートブックマークが*Bookmark List*に特に強調表示されるため、より簡単に認識できます。 suまたはsudoroot)でアクセスする必要があるリモートブックマークは、表示方法が異なります。

あなたは、あなたもすぐに、diredの中でそれを含むリモートディレクトリを訪問し、それらをマーキングし、C-x bを押すことで、複数のリモートのファイルやディレクトリをブックマークできDired+使用している場合。ブックマーク名を付ける必要はありません。ファイルの名前が付けられます。それらのブックマークをリモートファイルへの移動に決して使用しない場合でも、ブックマーク+tagsでそれらのブックマークを使用してファイルを編成し、それらのサブセットで操作することができます。

Iciclesを使用すると、コマンドを使用してブックマークにジャンプするたびに、補完候補を、完了時に[email protected]をヒットしてリモート候補に絞り込むことができます。

3

リモートマシンに焦点を当てて単純な答え:

私はすべての私のemacsを行うことを計画している場合は、リモートマシン上で動作し、私は

ssh -X [email protected] 

を使用して、リモートセッションでEmacsを実行します、私のローカルマシンに表示されます。それは古い質問ですが、私は完全性のためにこれを投げたかったのです。いくつかのxhost/X設定の問題があると認められていますが、多くのネットワークでこれはバットからすぐに機能します!

1

SSH mode for emacsはあなたが探しているものです。

あなたはそれを設定したら、あなただけのそれは(一度のコマンドライン用、一度ファイルを読み込む)を2回パスワードの入力を求めるプロンプトが表示さ

M-x ssh RET hostname RET 

を実行します。

ほとんどの場合、他のシェルと同じように扱うことができます(非対話型でも小さな違いもありますが、それだけです)。

あなたが現在いるディレクトリを追跡しているので、あなたが見ているディレクトリからファイルを開くときは、自動的に正しいディレクトリで開始され、ファイル名を入力するだけです。

Emacs Wikiさらに詳しい情報があります。

3

元のポスターは、rootユーザーとしてリモートファイルを開くことに関心を示しました。これは、コマンドを実行できます。

C-x C-f /ssh:[email protected]|sudo:remotehost:/path/to/file RET

詳しいドキュメントはここで見つけることができます:https://www.emacswiki.org/emacs/TrampMode#toc14

関連する問題