VimCommander:ssh経由でリモートシステムを操作する

前戯



ViMを使用し、満足しました。 彼がファイルシステム上で小さな探検家になる方法を知っていると( vimを実行するのに十分です )。 後で、 NERD_Treeプラグインを追加することでこれを行う方がはるかに便利であることを発見しました。それは本当に便利で、VimCommanderがその基礎に基づいて作られていればうれしいでしょうが、Leandro(VimCommanderの著者)は逆にMidnightCommanderを模倣しようとしました。 さて、私はVCをssh経由でリモートシステムで動作するように訓練する必要があります、彼の兄(mc)がこれをかなりうまくやるからです。 これらの考えについて、シェルを開いてvim〜/ .vim / plugin / vimcommander.vimと入力しました。



アイデア



純粋なsshクライアントにこのような機能を実装する希望も機会もありませんでしたが、1つのユーティリティ-sshfs ...



私の考えは、いつものように、設計から実装へではなく、その逆(しかし何をすべきか)でした...

私が最初に思いついた、または既存の経験から収集しなければならなかったのは、コマンド構文と、それを呼び出す方がより便利な方法でした。 sshfsを使用することで、ユーザーがエイリアスを持っている場合に〜/ .ssh / configファイルを解析する必要がなくなり、ユーティリティがすべてを実行するので便利になりました。

アドレスを入力するための構文は、 [IdentityFile、] [UserName @] HostName [:Port]のように選択されています 。 もちろん、接続文字列をチェックして解析し、sshfsに最も適切にフィードするのにいくらかの努力が必要でした(なぜ追加のエラーが必要なのですか?)。



このすべてを呼び出すことは、MCキーF9とのアナロジーによって多少決まりました(そこからすべてのホットキーを取得した著者VimCommanderのイデオロギーを維持する必要があります)。 もちろん豊富なメニューは表示されませんが、私の機能は:-)と呼ばれます。 そして、いくつか質問をします。 どのような質問がありますか? ただし、ここでは非常に重要な役割を果たします。



作業ロジック



最初に理解する必要があるのは、VimCommanderを閉じてもViMのすべてのコピーでさえ、接続自体が落ちないことです(MCでは終了時にすべてが壊れます)。 その結果、ウィザードから最初の質問を受け取りますsshfsで何をしたい(マウント/マウント解除/中止)しますか? [mda] :. したがって、マウントされているものはすべて自分で無効にする必要があります(もちろん、マシンを再起動すると、ロシア民主主義の父が問題を解決しますが、どのくらいの頻度で車を改造しますか?)。

ここで小さなアーキテクチャに入ります。現在マウントされているものはすべて/tmp/ssh_dir.listファイルに書き込まれます。 ちなみに、マウントポイントは同じ場所に作成されます- / tmp /に、ランダムな名前で(thanks / dev / urandom) リモートシステムで作業し、ViMを終了し、しばらくしてから仕事に戻ることができ、リモートシステムを再度マウントしないことがわかります。

アンマウントの問題も賢明ではありません。 どのマウントポイントを無効にするかを選択します:/tmp/CEc6CgFeRE0U(192.168.0.1);/tmp/4BEK8QqtWqWT(habrahabr.ru) 不要になったホストのシリアル番号を指定するだけです。



Xmages.net画像共有



vimcommander.vimスクリプトの変更されたテキストが添付されています(他の機能にはまだ小さな変更があるので、説明された機能のみを必要とする人(興味のあるコミットにロールバックします)、それらを個別に追加するときに残りの変更について説明します)。



不足しているもの



1. Mbは、すべてをアンマウントする機能を追加する価値があります。

2.マウントされたホストのリストは、マウントを解除しても確認できますが、損傷はありません。

3.同じコードと「招待」は完璧にはほど遠い...



PS VimCommanderで見逃していることは他にもあります。それらを調理する時間があります。



主なことは、ViMでの作業を楽しむことです。






すべての変更は、GitHubのLeandro Penz(VimCommanderの著者)のリクエストでアップロードされました。彼がブランチでそれらを保持してくれることを願っています。

私のフォーク: github.com/Alukardd/vimcommander

メインプロジェクト: github.com/lpenz/vimcommander

スクリプトページ: www.vim.org/scripts/script.php?script_id=808



UPD:小さなコードのリファクタリングを実施し、同時にいくつかのバグを修正しました。

また、小さなメモがあります。sshfsはsftpプロトコルに従って動作するため、サーバー側でアクティブにする必要があります。



All Articles