Vim が Wayland のクリップボードをサポート
Wayland のクリップボード
Vim では、2025年6月27日更新の v9.1.1485 で、Wayland のクリップボードのサポートが入りました。
最新の Vim をビルドすると+wayland
と+wayland_clipboard
が有効になっていると思います。:version
で確認してみてください。
Wayland への接続を無効化したい場合は-Y
オプションを付けて Vim を起動する必要があります。Wayland への接続を再度初期化するコマンド:wl[restore]
も追加されています。
今までは、Wayland のクリップボードと Vim のレジスタを双方向で連携する[1]には以下のような設定が必要でした。[2]
この他にもヤンクが絡むコマンドなどがある度にsetreg
を呼ぶ必要がありました。
nnoremap <silent> p <Cmd>call setreg('"', system('wl-paste -n'))<CR>""p
nnoremap <silent> P <Cmd>call setreg('"', system('wl-paste -n'))<CR>""P
xnoremap <silent> p <Cmd>call setreg('"', system('wl-paste -n'))<CR>""P
xnoremap <silent> P <Cmd>call setreg('"', system('wl-paste -n'))<CR>""p
inoremap <C-R>" <Cmd>call setreg('"', system('wl-paste -n'))<CR><C-R>"
set clipboard^=unnamed
augroup WaylandClipboard
autocmd!
autocmd TextYankPost * silent call job_start(['wl-copy', '--', getreg('*')])
augroup END
これからは、上記のケースでは次の1行で済むようになります。
set clipboard^=unnamedplus
関連するオプションなど
X11 と Wayland の両方が有効な時の優先順位
'clipmethod'
オプションでどちらを優先するか指定することができます。デフォルトでは"wayland,x11"
となっており、Wayland が優先されます。
現在指定されているメソッドはv:clipmethod
で確認できます。
Wayland seat の設定
もし、Wayland の同一セッション内で複数の seat を使用している場合は、新たに導入された'wlseat'
で seat を指定できます。
その他
GNOME では Wayland のクリップボードにアクセスする為にフォーカスを奪う必要があります。その際に使用する'wlsteal'
オプションが追加されました。
更に、Wayland への接続や'wlsteal'
が有効な時にフォーカスを奪う際のタイムアウト時間を指定する'wltimeoutlen'
オプションが追加されました。
おわり
Wayland に関する、最近追加された機能についてまとめてみました。
最新の情報については:help wayland.txt
をご参照ください。
以上です! ウェーイ!
Discussion