0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

wsl ubuntu上のvimでクリップボードにコピーする簡単な方法

Last updated at Posted at 2024-11-16

wsl からは windowsのファイルを実行できるので、clip.exeを実行できる。

なので、vimのビジュアルモードで範囲を選択して、clip.exeを実行すればOK。

具体的な手順

  1. vを押してビジュアルモードに入り、カーソルを移動させて範囲を選択。

  2. :を押すと、:'<,'>が入力されます。これは選択した範囲を表しています。

  3. w !clip.exeをつけ足し、:'<,'> w !clip.exeにして、Enterを押します。このコマンドは、wで一旦一時ファイルに書き出し、その内容を、clip.exeでクリップボードにコピーします。
    '<,'>w !clip.exeの間に半角スペースが必要なことに注意

これで、クリップボードに選択した行がコピーされます。

この方法の問題点

日本語が文字化けする

出力をiconvで文字コードを変換してからclip.exeに渡せばOK

:'<,'> w !iconv -t cp932 | clip.exe

root権限で開いたファイルの場合、clip.exeが見つからない

デフォルトのユーザーの場合は、/mnt/c/WINDOWS/system32 にデフォルトでパスが通っているが、ほかのユーザーの場合は違うため。
愚直に、フルパスを指定してclip.exeを実行すれば、コピーできる。めんどくさいけど

:'<,'> w !/mnt/c/WINDOWS/system32/clip.exe

行全体がコピーされてしまう

ビジュアルモードで選択した範囲だけをクリップボードにコピーしたかったのですが、実際には選択した範囲を含む行がクリップボードにコピーされます。
選択した範囲だけコピーできるようにしたいので、誰かvimに詳しい方教えてくださると嬉しいです。

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?