2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NeovimでVSCodeみたいにRemoteSSHする方法を見つけた

Posted at

プロローグ

vim大好きな自分が,ときたまVScodeを使わざるを得ない時がありました.
それは,サーバー内orコンテナ内のファイルをローカルから直接編集したい時.
vimでもできないかと半年くらい前から思って色々探していましたが見つからず.
でも見つけちゃいました.
その名はremote-nvim.nvim

remote-nvimについて

これマジで神です👼
OSはLinux, mac, FreeBSDにサポート対応していて,
ssh, docker-container/image, dev-containerに対応してます.

やってることとしては

  • リモート先にneovimをshで自動インストール
  • ローカルのオレオレnvimコンフィグをリモートにプッシュ
  • リモートのnvimを起動し,ローカルのnvimと接続
  • 実質ローカルからオレオレnvimでリモート先のファイルを操作できる.もちろんさまざまなプラグインをほとんど使えるし,他にインストーしたい依存ツールとかも設定で自動インストできる(自分はlazygitとか入れてる)
  • しかも使い終わったらちゃんとクリーンアップして,サーバーの環境を汚さない

インストール

lazy.nvimでプラグインごとにファイル分割してる場合

return {
   "amitds1997/remote-nvim.nvim",
   version = "*", -- Pin to GitHub releases
   dependencies = {
       "nvim-lua/plenary.nvim", -- For standard functions
       "MunifTanjim/nui.nvim", -- To build the plugin UI
       "nvim-telescope/telescope.nvim", -- For picking b/w different remote methods
   },
   config = true,
}

あとは,githubとか見て各々でconfigのパラメータとか設定していけば使えるようになります.
自分はssh_promptsのEnter passphrase for keyの設定してなくて,ssh接続するときにパスワード入力できひんってなりました.

local ssh_config = {
			ssh_binary = "ssh",
			scp_binary = "scp",
			ssh_config_file_paths = { "$HOME/.ssh/config" },
			ssh_prompts = {
				{
					match = "Enter passphrase for key",
					type = "secret", -- パスフレーズはシークレットとして扱う
					value_type = "static", -- 毎回新しいパスフレーズを入力するか
					value = "", -- 初期値
				},
				{
					match = "password:",
					type = "secret",
					value_type = "static",
					value = "",
				},
				{
					match = "continue connecting (yes/no/[fingerprint])?",
					type = "plain",
					value_type = "static",
					value = "",
				},
			},
		}

使い方

デモ動画がgithubに載っています.
起動はRemoteStartコマンド打って,ssh接続の必要項目などをtelescope上で選択していくだけで簡単にできます.

:RemoteStart
リモートインスタンスに接続する。リモートneovimサーバーがすでに実行されている場合、ユーザーはローカルクライアントを起動できる

:RemoteStop
Neovimサーバーの実行を停止し、セッションを閉じる

:RemoteInfo
現在の Neovim 実行で作成されたセッションに関する情報を取得する.進行状況ビューアーを開く

:RemoteCleanup
リモートインスタンスからワークスペースおよびリモートneovimセットアップ全体を削除する.また,リモートリソースの構成をクリーンアップする.

:RemoteConfigDel
保存されたセッションレコードから、存在しなくなったリモートインスタンスのレコードを削除する.

:RemoteLog
プラグインのログファイルを開く.エラーが出たらここ見れば大体わかる.

:RemoteInfo
接続に関する情報などが表示される.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?