この
対象読者
普段Vim/Neovim (以下、.vimrc を
モチベーション
SSH先でも
デモ (Neovim)
方法
注: SSHホスト側を
1: lemonadeを インストール
lemonade を
2: Lemonade Server起動
ホスト側でlemonade server --allow=0.0.0.0/0 と
3: Vim Pluginの 作成
Client側でlemonade.vim を
" Clipboard configuration for lemonade (SSH remote clipboard)
if exists('$SSH_CLIENT') && executable('lemonade')
" リモートホストのIPを抽出 (例: '192.168.1.100 54321 22' -> '192.168.1.100')
let s:remote_host = split($SSH_CLIENT)[0]
if !empty(s:remote_host)
let g:clipboard = {
\ 'name': 'lemonade',
\ 'copy': {
\ '+': ['lemonade', '--host', s:remote_host, 'copy'],
\ '*': ['lemonade', '--host', s:remote_host, 'copy'],
\ },
\ 'paste': {
\ '+': ['lemonade', '--host', s:remote_host, 'paste'],
\ '*': ['lemonade', '--host', s:remote_host, 'paste'],
\ },
\ 'cache_enabled': v:false,
\ }
if exists('g:loaded_clipboard_provider')
unlet g:loaded_clipboard_provider
runtime autoload/provider/clipboard.vim
endif
set clipboard=unnamed
endif
elseif has('clipboard')
set clipboard=unnamed
endif注: lemonade.vim の 保存場所
プラグインと
- Vim:
$HOME/.vim/plugin/Cf.load-plugins(Vim日本語ドキュメント) - Neovim:
$HOME/.config/nvim/plugin/Cf.load-plugins(Neovim公式ヘルプ)
Appendix: NixOS / nix-darwin用デーモン
For nix-darwin
Full Version: https://github.com/peacock0803sz/dotfiles/blob/fc735b76cee9405733500468fa14dc1e08e59b59/.config/nix/nix-darwin/lemonade.nix
{ ... }@inputs: {
launchd.user.agents.lemonade = {
serviceConfig = {
EnvironmentVariables = {
LANG = "ja_JP.UTF-8";
LC_ALL = "ja_JP.UTF-8";
};
ProgramArguments = [
"${inputs.pkgs.lemonade}/bin/lemonade"
"server"
"--allow=0.0.0.0/0"
];
KeepAlive = true;
StandardErrorPath = "/tmp/lemonade.err.log";
StandardOutPath = "/tmp/lemonade.out.log";
};
};
}For NixOS
Full Version: https://github.com/peacock0803sz/dotfiles/blob/fc735b76cee9405733500468fa14dc1e08e59b59/.config/nix/nixos/lemonade.nix
{ ... }@inputs:
{
systemd.services.lemonade = {
description = "Lemonade clipboard server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
Type = "simple";
User = inputs.username;
Environment = [
"LANG=ja_JP.UTF-8"
"LC_ALL=ja_JP.UTF-8"
];
ExecStart = "${inputs.pkgs.lemonade}/bin/lemonade server --allow=0.0.0.0/0";
Restart = "always";
RestartSec = 5;
StandardOutput = "append:/tmp/lemonade.out.log";
StandardError = "append:/tmp/lemonade.err.log";
};
};
}