走Wayland的wslg时,目前的剪切板无法正常交互,需要用wl-clipboard中的wl-copy与wl-paste来代替掉Powershell与clip.exe,否则会乱码。
(defun wsl-copy-region-to-clipboard (start end)
"Copy region to Windows clipboard."
(interactive "r")
(call-process-region start end "wl-copy" nil 0))
(defun wsl-cut-region-to-clipboard (start end)
(interactive "r")
(call-process-region start end "wl-copy" nil 0)
(kill-region start end))
(defun wsl-clipboard-to-string ()
"Return Windows clipboard as string."
(let ((coding-system-for-read 'dos))
(substring; remove added trailing \n
(shell-command-to-string
"wl-paste") 0 -1)))
(defun wsl-paste-from-clipboard (arg)
"Insert Windows clipboard at point. With prefix ARG, also add to kill-ring"
(interactive "P")
(let ((clip (wsl-clipboard-to-string)))
(insert clip)
(if arg (kill-new clip))))