作業サーバーに SSH で接続するときに、Sublime Text 2 をエディターとして使用しようとしていますが、困惑しています。私はこれを見つけましたhttp://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/(他の多くの投稿の中で)役立つように見えますが、正確には従いません、特に 5 行目のリモート変数にどのような値を入力する必要があるかについて説明します。「/Users/path/to/local/copy」をローカル ルート ディレクトリに設定しましたが、それが正しいかどうか、またはさらにあるかどうかはわかりませんする。何かご意見は?私はOSX10.8を使用しています
15 に答える
次の 3 つの方法があります。
SFTP プラグイン (商用) http://wbond.net/sublime_packages/sftpを使用します。個人的にはこれをお勧めします。パスフレーズを使用して公開 SSH キーを設定すると、安全で簡単で、すべてのペニーの価値があるからです http://opensourcehacker.com/2012/ 10/24/ssh-key-and-passwordless-login-basics-for-developers/
コメントに記載されているように、
osxfuse
およびを使用してリモートをローカル ファイル システムとしてマウントします。sshfs
OSX のバージョンと UNIX ファイル システムのスキルによっては、これは少し難しいかもしれません。ある種のローカルデーモンを使用してリモートトンネリングでファイル編集を行うrmateのようなものを一緒にハックします(非常に困難で面倒ですが、sudoと互換性があります) http://blog.macromates.com/2011/mate-and-rmate/
また、理論的には、X11 をリモート サーバーにインストールし、そこで VNC または X11 転送を介して Sublime を実行できますが、これを行う意味はありません。
TextMate の に触発されたrsubを使用できますrmate
。説明から:
Rsub は、Sublime Text 2 用の TextMate 2 の「rmate」機能の実装であり、SSH ポート転送/トンネリングを使用してリモート サーバー上でファイルを編集できるようにします。
適切に設定する方法については、こちらのチュートリアルをご覧ください。
私はWindowsを使用しており、 SFTP、WinSCP、Unison、LinuxのSublime Textの4つの方法を使用し、SSHを介してWindowsにX11転送します(はい、面倒な設定や無料のツールを使用せずにこれを行うことができます)。
Linux マシンにソフトウェアをインストールできる場合は、4 番目の方法が最適です。
4 番目の方法:
モバエクスターム
- Windows にMobaXtermをインストールする
- MobaXterm から Linux ボックスへの SSH
- LinuxボックスにSublime Text 3をインストールします。Ubuntuでの方法は次のとおりです
- コマンドプロンプトで、sublime で開始します
subl
- それでおしまい!これで、崇高なテキストが Linux で実行されますが、そのウィンドウは Windows デスクトップで実行されます。これが可能なのは、MobaXterm が SSH を介した X11 転送を処理するためです。そのため、面倒なことをする必要はありません。わずかな遅延が発生する可能性がありますが、Linux マシン上でファイルを編集しているため、ファイルが同期しなくなることはありません。
注: 特定のライブラリに対して不平を言う場合に subl を呼び出す場合 - mobaxterm から sublimetext を正常に呼び出すためにそれらをインストールしてください。
Linux ボックスにソフトウェアをインストールできない場合は、Unison が最適です。なんで?
- それは無料です
- これは速い
- 信頼性が高く、使用するエディターを気にしません
- カスタムの無視リストを作成できます
SFTP
セットアップ: SFTP Sublime Text パッケージをインストールします。このパッケージにはライセンスが必要です。
- 新しいフォルダを作成する
- Sublime Text Project として開きます。
- サイドバーでフォルダを右クリックし、Map Remote を選択します。
- sftp-config.json ファイルを編集する
- 手順 1 のフォルダーを右クリックし、[ダウンロード] を選択します。
- ローカルで作業します。
sftp-config では、通常次のように設定します。
"upload_on_save": true,
"sync_down_on_open": true,
これにより、マシンへの SSH ターミナルに加えて、かなりシームレスなリモート編集エクスペリエンスが得られます。
WinSCP
- WinSCPをインストールして実行する
- [設定] (Ctrl+Alt+P) に移動し、[転送]、[追加] の順にクリックします。プリセットに名前を付けます。
- 転送モードをバイナリに設定します (ライン変換は必要ありません)。
- ファイルの変更を「変更なし」に設定
- [ファイル マスク] の横にある [編集] ボタンをクリックし、含めるファイルと除外するファイルとフォルダーを設定します (.git/.svn フォルダーが存在する場合、またはビルド製品を同期から除外する場合に役立ちます)。
- [OK] をクリックします。
- リモート サーバーに接続し、目的のフォルダーに移動します。
- ローカル マシン上の空のフォルダーを選択します。
- 新しく作成した転送設定プリセットを選択します。
- 最後に、Ctrl+U ([コマンド] > [リモート ディレクトリを最新の状態に保つ]) を押して、[開始時に同期] と [サブディレクトリを更新] がオンになっていることを確認します。
それ以降、WinSCP は変更の同期を維持します。
SublimeText を使用してローカル フォルダーで作業します。編集中のファイルから行末を推測するように Sublime Text が設定されていることを確認してください。
ユニゾン
ソース ツリーが大規模な場合 (深い階層で約数百 MB)、上記の WinSCP メソッドは少し遅くなる可能性があることがわかりました。Unisonを使用すると、はるかに優れたパフォーマンスを得ることができます。欠点は、Unison が自動ではなく (キーを押してトリガーする必要がある)、Linux マシンでサーバー コンポーネントを実行する必要があることです。良い面は、転送が信じられないほど高速で、信頼性が高く、ファイル、フォルダー、拡張子を無視することで、セットアップが非常に簡単になることです。
私はこれがかなり古いことを知っていますが、これを行うための本当にクールな方法を共有する価値があります.
ConemuとWinSCPで必要なもの。これらは簡単な指示です
WinSCP.exe を開き、目的のリモート サーバーにログインします (
アタッチする前にログインすることが重要であることがわかりました ... )。WinSCP の設定 - 変更する 2 つの設定。Commander ではなく、Explorer タイプのインターフェイスを選択すると、ローカル ファイルが表示されなくなります。あなたがしたくない限り(しかし、それはここではうまくいかないようです)。Sublime をデフォルトのエディターとして設定します。
ConEmu を開いた状態で、タブ バーを右クリックし、オプションを選択します
Attach to...
。ダイアログ ボックスが開き、実行中のアプリケーションが表示されます。[WinSCP] を選択し、[OK] を選択します。ConEmu には、リモート ファイルを表示する WinSCP の開いたタブがあります。WinSCP タブを右クリックし、 を選択します
New console...
。ダイアログ ボックスが開いたら、システム上の Sublime 実行可能ファイルへのパスを入力します。を押す前にStart
、ボックスでNew console split
ラジオボタンを選択しto right
、パーセンテージを設定します。通常は 75% を選択しますが、これは好みに合わせてカスタマイズでき、後で変更することもできます。- これで、WinSCP の右側で実行されている同じウィンドウに Sublime が表示されます。Sublime では、View メニューから を選択
Sidebar->Hide Sidebar
し、bam を実行すると、ローカルとまったく同じ方法でリモート ファイルを取得できます。ただし、WinSCPは非常に高速です。
- これで、WinSCP の右側で実行されている同じウィンドウに Sublime が表示されます。Sublime では、View メニューから を選択
私は 2 つのモニターを持っています。左側のモニターには Chrome ブラウザーが表示され、右側のモニターにはコード エディターが表示されます。また、ConEmu
別のタブを作成して、作業中のサイトに SSH で接続します。これにより、実行gulp
やgrunt
リモートでの実行や、コマンド ラインからのファイル操作も実行できます。開発を大幅にスピードアップ。
スクリーンショットは次のとおりです。
これは、以前に ssh をリモート IP に設定したリモート ホスト上にあるファイルをローカルで編集する最も簡単な方法です。
# issue on local box
sudo apt-get install sshfs # on local host install sshfs ( linux )
# on local box create secure mount of remote directory
export REMOTE_IP=107.170.58.249 # remote host IP
sshfs myremoteuserid@${REMOTE_IP}:/your/remote/dir /your/local/dir # for example
終わり !!!
ローカルホストでファイルの編集を開始するだけです...ディレクトリをローカルにリストすると、サブディレクトリにcdするか特定のファイルをリストするまで何もリストされない場合があります...遅延読み込み...これはファイルの編集には影響しません
subl /your/local/dir/magnum_opus.go # local file edit using sublime text
上記は実際にリモートファイルを編集しています
/your/remote/dir/magnum_opus.go # remote file on box $REMOTE_IP
OSX または Windows については、Digital Ocean の親切な人々からのこの tut を参照してください。
osxfuse に似た別の Mac ソリューションは、Panic Software の Transmit FTP クライアントを使用することです。これにより、リモート フォルダーをローカル ディスクとしてマウントできます。非常に安全なSFTPをサポートしています。
GiySyncというプロジェクトに取り組んでいます。まだ作業が必要ですが、オープン ソースであり、私は数年間毎日使用しています。私はGitSyncAppと呼ばれるネイティブ OS X バージョンにも取り組んでいます
現在は OS X のみですが、Linux のサポートを簡単に追加できるはずです。Windows もサポートされる可能性があります。
ファイル システム イベントを監視することで機能し、gitを使用してローカル マシンとサーバー上のプロジェクト フォルダーを同期します。
私は、osx fuse、Expand Drive、Transmit、rsync を使用するいくつかのソリューションなどの他のソリューションを試しました。これらはすべて、小規模なプロジェクトでは「問題なく」動作しますが、大量のコードを扱う場合はうまくいきませんでした。
多くのファイル システム オプションは、パフォーマンスを向上させるためにキャッシュを行います。たとえば、他の人と一緒に作業していて、他の誰かがサーバー上のファイルを変更した場合などです。
また、不安定なネットワークや低速のネットワークを使用していると、最終的に空のファイルになるという問題が発生しました。または、同期しなかったファイルの場合、キャッシュが奇妙になりました。うまくいけば、あなたは最近コミットしました。git を使用すると、各コミットの整合性がチェックされるため、この問題が解決されます。
2 つのボーナス機能:
- 保存するたびにコミットすることになります。あまり便利ではありませんが、時間を遡らなければならない場合はできます。
- 任意のテキスト エディターで動作します。
私にとってうまくいった解決策-Macでローカルに編集し、ファイルをリモートマシンに自動的に同期させます
リモート マシンにパスワードなしでログインできることを確認します。そうでない場合は、次の手順に従ってくださいhttp://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/
~/Library/LaunchAgents/filesynchronizer.plist に次の内容のファイルを作成します。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>filesynchronizer</string> <key>ProgramArguments</key> <array> <string>/usr/bin/rsync</string> <string>-avz</string> <string>/Users/USERNAME/SyncDirectory</string> <string>USERNAME@REMOTEMACHINE:~</string> </array> <key>WatchPaths</key> <array> <string>/Users/USERNAME/SyncDirectory</string> </array> </dict> </plist>
ターミナルウィンドウで実行
launchctl load ~/Library/LaunchAgents/filesynchronizer.plist
それでおしまい。~/SyncDirectory 内のファイルへの変更は、リモート マシンの ~/SyncDirectory に同期されます。ローカルの変更は、リモートの変更を上書きします。
これにより、SyncDirectory を監視する launchd ジョブが作成され、何かが変更されるたびに rsync が実行され、ディレクトリがリモート マシンに同期されます。