4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【2021-11-28追記あり】Windows 10からWSL上のEmacsへのテキストのコピペが急にできなくなる

Last updated at Posted at 2020-10-31

※2021-11-28追記あり。末尾参照

Windows 10上のWSL(1)のUbuntu上でEmacsを使っているが、WindowsでCtrl_Cでコピペしたテキストを、EmacsにC-yでペーストしようとしたら「Kill ring is empty」と怒られるようになった。
昨日まで(たぶん)快調に使えてたのに、ある日急に使えなくなった。
(もっと前から使えてはいなかったのかもしれないけど、分からなくなっている)

いぜんも同じ症状になって、そのときは~/.emacs.d/init.elに

(setq x-select-enable-primary t)

というのをどこかで調べて追加すると直ったのだが(原理も分からないし、どこで調べたのかも分からなくなっている。スミマセン)今日また同じ症状になった。

分からないなりに調べて、以下のブログに行き当たった。

以下のコードを~/.emacs.d/init.elに追加。

(defun wsl-paste ()
  (interactive)
  (insert (shell-command-to-string "powershell.exe -command 'Get-Clipboard'")))
(global-set-key (kbd "C-c C-v") 'wsl-paste)

これで、C-cC-vでWindows 10のクリップボードからペーストできるようになった。
こっちも原理は分からないが、動いているので助かる。
ひどい内容だが今シュラバなのでこれにて失礼。

環境:

Windowsのバージョン (winver):
Windows 10 Pro バージョン1903 (OSビルド 18362,1139)

Emacs (M-x emacs-version)
GNU Emacs 26.3 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.13) of 2019-12-25

Linuxのバージョン (uname -a)
Linux DESKTOP-TB4M341 4.4.0-18362-Microsoft #1049-Microsoft Thu Aug 14 12:01:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux

※2021-11-28追記
その後、WSL2に変えたりしたら「どういうわけか・・・」WindowsクリップボードとEmacs Kill Ringの共有ができていた(EmacsからM-wでコピーができ、EmacsへC-yでペーストできる状態)のだが、先週あたりから「どういうわけか・・・」またできなくなったので、上記のelispにお世話になることになった。

それで、EmacsからWSLへのコピペが上記だけではできないのだが、こちらはこれで解決した。

  (defun wsl-copy (start end)
    (interactive "r")
    (shell-command-on-region start end "clip.exe"))
  (global-set-key (kbd "C-c c")  'wsl-copy)

なお、「powershell.exe -command 'Get-Clipboard'」がたまに(不規則に)エラーを返すことがあるが、その場合は

で紹介されているwin32yank.exeを使ってもいい。

その場合、「powershell.exe -command 'Get-Clipboard'」を呼んでいる行は以下のようになる。

  (insert (shell-command-to-string "win32yank.exe -o")))

同じように、clip.exeの代わりに

    (shell-command-on-region start end "win32yank.exe -i"))

でもいいっぽい。

(終わり)

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?