web-dev-qa-db-ja.com

WindowsサブシステムLinux-VIMクリップボードを使用しますか?

これをテーブルから外して混乱を避けるために...これは、WSLとしても知られるWindows 10(ubuntu)で実行されているLinux用です。これは、cygwinやwindowsやスタンドアロンLinuxとは異なります。それはそれ自身の獣です。

ですから、私がすでに読んだすべての記事を参照する前に、またはこれについて以前に尋ねられたコメントをする前に、上記を覚えておいてください。

Windowsクリップボードからコピーアンドペーストを機能させる方法を知っている人はいますかOR WSL Ubuntu Linuxエミュレーション?)私はset clipboard=unnamedplusを使用しています。 yy"+yyなどを使用しています。

はい、それはvim-gtkであり、+xterm_clipboardをサポートしています。

22
dman

この解決策 githubユーザーのおかげでうまくいきました robbiev

完了のために、これは彼の答えからの抜粋です:

  1. インストール VcXsrv(インストール後に起動した場合は停止してください)
  2. 新しくインストールしたプログラムXLaunchスタートメニューで検索)を使用して起動します。
  3. すべてのデフォルトオプションを使用して、クリップボードオプションがオンになっていることを確認します。

  4. 最後に、構成をファイル_config.xlaunch_に保存します(それを使用して、今から開始します)。

  5. Windowsのbashで_DISPLAY=localhost:0.0_にエクスポート_.bashrc_を配置し、開いている任意のターミナルで_source ~/.bashrc_を実行します。

  6. クリップボードサポートを使用してvimがインストールされていることを確認します。 _vim --version | grep clipboard_は_+clipboard_ではなく_-clipboard_と表記する必要があります。また、vimでexコマンド:echo has('clipboard')を実行し、_0_と表示されている場合、クリップボードサポートは組み込まれていません。

  7. クリップボードをサポートしていない場合は、クリップボードをサポートするようにコンパイルされたvimパッケージをインストールします。 _apt-get install vim-gtk_。

  8. これで、_"*p_および_"*y_を介してWindowsシステムクリップボードにアクセスできます。また、_set clipboard=unnamed_ファイルに_.vimrc_を挿入して、デフォルトに設定することもできます。

robbiev が言及しているように、SSH X転送を使用してリモートマシンからWindowsクリップボードを使用できるようになったはずです。

14
Aerows

ターミナルを右クリックし、オプションボックスでCTRL + SHIFT + C/Vをチェックして、ターミナルを介したコピー/ペースト操作を実行できます。

WSL Ubuntu Terminal

5
errorprone

ConEmuによる部分的なソリューション

ConEmuについて誰も言及しなかった理由がわかりません。少なくとも、クリップボードの問題の半分を処理できます。

  • WindowsクリップボードをWSLに貼り付けるには、通常のCtrl + Vは正しく処理されます。

    • 1つの特典は、Windowsで絶対パスをコピーする場合、ConEmuで貼り付けたときにc:/users/name転写になり/mnt/c/users/name。これは、WSLを介してネイティブに実行できます。
  • WSLからコピーするには、今のところ、ハウスカーソルを使用する必要があります。それは90%以上の時間で機能します。

私のユースケースでは、WSLからコピーすることはあまりありません。そしてConEmuによる貼り付けヘルプをとても楽しんでいます。

2
llinfeng

QuickEdit Modeを有効にしている場合は、マウスでテキストを選択して右クリックするだけで、クリップボードにコピーできます。

QuickEditモードを有効にするには、上部のコンソールウィンドウを右クリックしてProperties(および/またはDefault)、次にQuickEdit Mode

編集:そのままでは、VIM=から現在Windowsクリップボードにコピーすることはできません。ただし、WSLリポジトリ内のGitHub-Issueで、一部の人が発見したようですXmingまたはVcXsrvをそれぞれ使用してこれを行う方法: https://github.com/Microsoft/WSL/issues/892#issuecomment-275873108

EDIT2:.vimbufferを使用してもう一度試してください: https://stackoverflow.com/questions/44480829/how-to-copy-to-clipboard-in-vim-of-bash-on-windows =

1
dwettstein

WSLターミナルには多くの奇妙な点がありますが、Vimのクロスコピー/貼り付けを使用することは私の本の最大の不快感です。 2018年4月の時点で、Vimや他の領域に貼り付けるために(通常の正気を使用して)何も機能しなかったので、今のところ、問題やその他の関連するバッファを回避してみましょう。これは直接のWSLソリューションではなく、MSが修正を提供するまで、より良いターミナル+ SSHを使用する回避策です。

PuTTY 、または拡張フォーク Kitty は、WSLと比較してより堅牢な端末を提供します。ローカルホスト経由のSSHを使用し、カスタムポートを使用してWSL(または他のサーバー)に接続し、双方向またはネイティブの貼り付け、スクロールなどのほぼすべてのVim機能を含む、より充実した機能を備えた端末を取得できます。[すべての機能をトリガーするには、Vimの設定を微調整する必要がある場合があります]。

PuTTY/Kittyは、カスタムlocalhostポート上のWSLで利用可能なSSHサーバーを必要とします。 WSLでlocalhost SSHサーバーをまだセットアップしていない場合は、以下に簡単な概要を示します。

ステップ1)Ubuntu WSLターミナルを開き、Sudo suを実行してrootとして認証し、vim /etc/ssh/sshd_configを実行してSSHサーバーconfを開きます。

ステップ2)最初の数行の近くで「ポート」を探します。 22に設定される場合があります。衝突しないWSL SSHのカスタムポートを設定する必要があります。編集するにはiを押します。たとえば、ポート9977を使用します。

ステップ3)開発者の場合、またはローカルホストのWSL SSHのキーを気にする必要がない場合は、パスワード認証を探します。 PasswordAuthentication yesを設定できます。それ以外の場合、キーと高度なセキュリティ、またはWSLのファイアウォールを介したパブリックアクセスは、この回答の範囲を超えています。

ステップ4)編集が完了したら、escを押して編集モードを終了し、ファイルを保存して終了します:wqservice ssh restartを使用してsshサービスを再起動します。この時点で、WSLをマスターコンソールとして開いたままにします。

ステップ5)新しいPuTTY/Kittyセッションを作成し、カスタムポート(この例では9977)を使用してlocalhostに接続します。 WSL資格情報を使用してログインします。ルートが必要な場合はSudo suを使用します。これで、はるかに堅牢なシェルを使用できるようになります。必要なだけ繰り返しまたはscreenビューを繰り返します。

私はそれが直接的な答えではないことを知っていますが、少なくとも今のところ解決策です:)

1
dhaupin