Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

WSLコンソールのコピペ方法まとめ(Vim,Tmux)

$
0
0

bash on Cmderからzsh on WSLコンソールへ乗り換え

ここ数年、Windows10でシェルを使うときはcmderでbashを使っていたのですが、最近はWSL(Windows Subsystem for Liux)を使っています。WSLだと普通にLinuxが使えるので、zshも楽々インストールできるし、Python環境もAnacondaに縛られなくてもよくなるし、もはや、Linuxを使うためにMacを買う必要なんてありませんね。
でも、WSLが利用できるデフォルトのコンソール(WSLコンソール)は、コマンドプロンプトをベースにした、非常にシンプルなもので、正直使いづらい。。
たいていの人はcmderなどのエミュレータからWSLを使っているかと思うのですが、cmder+WSL+Tmuxで使うと、マウスでペインの操作ができなかったり、ステータスバーの更新がうまく表示されなかったりして、こりゃまた使えない。。
そこで仕方なく、WSLコンソールを使っています(WSLの今後に期待を込めて)。なんとかストレスなく作業できる程度まで設定できたのですが、特にコピペ方法の設定で苦戦したので、ショートカットキーとクリップボードとの連携方法をまとめておきます。
これを機に、WSLコンソールユーザーが増えれば幸いです!

コピペ方法

作業シーンごとのコピペ方法をまとめるとこんな感じです。基本的にはtmuxで使っているので赤字の方法だけ覚えていれば何とかなります。

作業シーンコピー貼り付け
WSLコンソール①マウス選択+エンター
②マウス選択+右クリック
③マウス選択+Ctrl+Shift+C
①右クリック
②Ctrl+Shift+V
Tmux on WSLコンソール①コピーモード(prefix+[)でVisualモードで範囲指定してy(vimモード)
②コピーモード(prefix+[)でマウスで選択した状態でエンター
③コピーモード(prefix+[)でダブルクリックで選択してエンター
Ctrl+Shift+V
Vim on WSLコンソールyp
(参考)notepadなどCtrl+CCtrl+V

(注意)tmuxでコピーしたものをtmuxに貼り付ける場合は、prefix+]でもOKですが、tmux以外(vimやnotepadなど)からコピーしたものをtmuxに貼り付けようとするとprefix+]では貼り付けられません。その場合は、Ctrl+Shift+Vで貼り付けます。

設定方法

WSLコンソールのショートカットキーによるコピペ機能有効化

WSLコンソールのプロパティ画面の[オプション]タブにある[編集オプション]セクションで[Ctrl+Shift+C/Vをコピー/貼り付けとして使用する]のチェックを入れます。
この機能は、Windows 10 Insider Preview Build 17643(RS5)以降で利用できるようになった機能で、これまでのコマンドプロンプトの独特なコピペ方法を解消してくれて便利なんですが、tmuxを起動するとコピーモードとしては使えなくなるようです。

XサーバとしてVcXsrcをインストール

WSLではXサーバがなくて、xselが使えないため、vimとクリップボードが連携できません。
そこで、XサーバとしてVcXsrcをインストールして、環境変数DISPLAYを設定します。インストール方法はこのあたりを参考にしてください。
初回起動時に設定ファイル(~.xlaunchファイル)を保存しておいて、.zshrcでこの設定ファイルを実行するようにしておくと便利です。以下では、多重起動も禁止しています。

.zshrc
if[-e /mnt/c/WINDOWS/System32/wsl.exe ];then
    export DISPLAY=localhost:0.0
    # auto run vcxsrvif[-z"$(tasklist.exe | grep vcxsrv)"];then
        cmd.exe /c config.xlaunch
    fi
fi

Tmuxをvimモードで使う

コピーモードのキーバインドをviにするため、.tmux.confに設定を追加します。
Macでは、reattach-to-user-namespace pbcopyでクリップボードに渡しますが、WSLの場合は使えません。
WSLではclip.exewin32yank.exeを使う方法があるようですが、XサーバとしてVcXsrcをインストールしていれば、Linuxと同様にxselが使えます。

.tmux.conf
setw -gmode-keysvibind-key -Tcopy-mode-vivsend-keys -Xbegin-selectionbind-key -Tcopy-mode-viysend-keys -Xcopy-pipe-and-cancel"xsel -ip && xsel -op | xsel -ib"unbind -Tcopy-mode-viEnterbind-key -Tcopy-mode-viEntersend-keys -Xcopy-pipe-and-cancel"xsel -ip && xsel -op | xsel -ib"

viキーバインドにしておくと、prefix+[の後でvimの検索機能が使えて便利です。

Vimのクリップボード連携

WSLのデフォルトのvimはUbuntuのデフォルトのvimと同じくvim-tinyで、クリップボード連携が使えないです。
sudo apt install vim-gnomevim-gnomeをインストールして、.vimrcに以下を追加してください。

.vimrc
set clipboard=unnamedplus

その他

WSLの再起動

WSLのtmuxはたまに暴走するのでプロセスをkillしたくなりますが、暴走するとWSLコンソールからkillできなくなります。その場合は、Windowsのタスクマネージャーでプロセスを直接おとすか、WSLを再起動すればいいです。WSLの再起動はWSL上からはできなくて、コマンドプロンプトでwsl --terminate Ubuntuとたたく(Ubuntuはディストリビューション名)。

リファレンス


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>