CygwinからWSLに移行するときのメモ


このエントリーをはてなブックマークに追加

多分15年以上Cygwinを使い続けていますが、いい加減WSLに移行していこうと考えています。以下、CygwinでできていたことをWSLでやるためにはどうすればいいかというメモです。

ExplorerのファイルをDrag & Dropしたときに/mntで始まるパスに自動変換

Cygwinでは、例えば C:\temp\file.txt というファイルを Cygwin のターミナルにD&Dすると、自動的に/cygdrive/c/temp/file.txtというCygwinのためのパスに変換してくれて便利でした。

WSLでは、 Drag & Drop from File Explorer produces incorrect file paths with WSL · Issue #331 · microsoft/terminal · GitHub を見る限り、現時点でこのような仕組みはありません。面倒ですが、毎回

$ wslpath "C:\temp\file1.txt"

というコマンドを使ってパスを変換するしかなさそうです。

小さなことですが、個人的にはWSLに移行する心理的障壁のひとつです。

(追記)WSLのコンソールを便利で高機能な「wsltty」に置き換える:Tech TIPS - @IT を参考に wsltty を入れることで、Drag & Dropしたときに/mntで始まるパスに自動変換できるようになりました!

ファイルの内容をクリップボードにコピー

Cygwinのときは以下のコマンドを使ってfile.txtの内容をクリップボードにコピーしていました。

$ lv file.txt > /dev/clipboard

lvはlessを多元化対応したページャで、EUC-JPなどの文字コードが現役だったころから癖で使い続けています。catでもいいと思います。

WSLでは以下でOKです。.exe をつけるとWindowsのコマンドを呼べるのですね。 (参考: How can one copy text from nano in Ubuntu WSL2 and paste it into a Windows application? - Ask Ubuntu )

$ cat file.txt > clip.exe

文字列のペースト

CygwinではShift + Insertで文字列ペーストできたのですが、WSLでは

2~

という文字列が表示されてしまいます。

Copy and Paste arrives for Linux/WSL Consoles - Windows Command Line によると、タイトルバーで右クリックしてダイアログを開き、「Ctrl+Shift+C/V をコピー/貼り付けとして使用する」にチェックすれば、Ctrl+Shift+V でペーストできるようになります。

(追記) wsltty を入れると慣れ親しんだShift + Insertで文字列ペーストできます。 (参考: terminal - Use shift-Insert to paste in WSL - Unix & Linux Stack Exchange )