多分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 )