リモートサーバーでNeovimを使用する際の不便な点の一つはクリップボードでした。ローカル環境ではNeovimの設定と xclip
だけで簡単に解決できますが、SSHを通じてリモートサーバーで作業をする際には、コピーした内容をローカルPCのクリップボードに入れることが難しいです。いくつかの試行錯誤を経て見つけたシンプルな解決策をご紹介します。
環境および準備事項
-
リモートサーバー: Ubuntuベースのサーバー
-
ローカルPC: UbuntuベースのGUI環境
-
Neovimのインストール完了 (init.lua設定を基に説明します。)
ステップ1: リモートサーバーにxclipをインストール
まずリモートサーバーで次のコマンドを使用して xclip
をインストールします。
sudo apt install xclip
このパッケージはNeovimがシステムクリップボードと通信するために必要です。
ステップ2: OSC52プロトコル設定
OSC52はSSH接続を通じてローカルクリップボードに直接内容を送信できるプロトコルです。Neovimで使用するためにプラグインをインストールします。
- Neovimの設定ファイル(
init.lua
)に追加:
{
'ojroques/nvim-osc52',
config = function()
require('osc52').setup()
local function copy()
if vim.v.event.operator == 'y' and vim.v.event.regname == '+' then
require('osc52').copy_register('+')
end
end
vim.api.nvim_create_autocmd('TextYankPost', {callback = copy})
end
},
この設定により、Neovimでコピー(yank)した内容がOSC52プロトコルを介して自動的にローカルクリップボードに送信されます。
ステップ3: SSHサーバー設定
リモートサーバーのSSHデーモン設定でX11Forwardingオプションを有効にする必要があります。そうしないとOSC52は正常に動作しません。
/etc/ssh/sshd_config
ファイルを開き、以下の設定を確認または追加します。
AllowTcpForwarding yes
X11Forwarding yes
変更後、SSHデーモンを再起動します。
sudo systemctl restart sshd
ステップ4: ローカルSSHクライアントの設定
ローカルPCでSSHを介してサーバーに接続する際、X11 Forwardingを有効にする必要があります。そのためにはSSH設定ファイルに追加します。
~/.ssh/config
ファイル:
Host myserver
HostName server-address.com
User myuser
ForwardX11 yes
Port 2222
IdentityFile ~/.ssh/id_rsa
これでSSHで接続する際には簡単に ssh myserver
コマンドを使用できます。
ステップ5: Neovimクリップボードオプション設定
最後にNeovimがクリップボードを使用するように設定します。 init.lua
ファイルに追加します。
vim.o.clipboard = 'unnamedplus'
使用方法
これで全ての設定が完了しました。Neovimで内容をコピーする際はVisual Mode(v
)で範囲を選択し、y
キーを押すと、コピーした内容が自動的にローカルPCのクリップボードに保存されます。
これでリモートサーバーのNeovimでコピーした内容をローカルのブラウザやメモ帳に直接貼り付けることができます。
最初は複雑に感じたプロセスですが、一度設定してしまえば非常に便利です。リモート開発環境を頻繁に使用するのであれば、ぜひ設定してみてください。
コメントはありません。