web-dev-qa-db-ja.com

ターミナルエディターにテキストを貼り付けると、Ubuntu for Windowsで常に1行に貼り付けられます(10)

私はWindowsシステムのクリップボードからvim(またはvim-gtxのようなバリアントを許可するクリップボードとxterm-clipboard)、nanoまたはemacsなどのターミナルテキストエディタに貼り付けようとしています。

私はvimが私のお気に入りのエディタであるため、主にvim-gtxでそれを試みています->しかし、どの方法を試しても、それがそうであるかどうか:

  • :set paste and paste with Ctrl-v、Shift-ctrl-vを使用します(これはクリップボードの内容を貼り付ける唯一の方法です)
  • 「* p」または「+ p」で貼り付けます(貼り付けません)
  • 入力をclip.exeにコピーし(xclipを試しましたが、このユーティリティはWSLで動作しないようです)、vimに貼り付けます。

上記のように、クリップボードからの貼り付けは、挿入モードでCtrl-vを押した場合にのみ機能するようです(Shift-Ctrl-vは「^」を挿入し、「* pおよび」+ pは「i」文字または「^? ')、および貼り付けられた出力は常に1行に貼り付けられます。

たとえば、VSCodeからコピーされたデフォルトの.bashrcファイルのセクション:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  Elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

次のように端末のテキストエディターに貼り付けます。

# enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if ! shopt -oq posix; then   if [ -f /usr/share/bash-completion/bash_completion ]; then     . /usr/share/bash-completion/bash_completion   Elif [ -f /etc/bash_completion ]; then     . /etc/bash_completion   fi fi

EOL文字を表示する場合、最後の文字の直後に$が表示されます。この問題は、使用するエディター、テキストのコピー元、および使用する貼り付けシステムに関係なく発生します(貼り付けが成功した場合)。

総括する:

  • VimのCtrl-vは、何でも貼り付ける唯一の方法ですが、貼り付けは1行でのみ行われます

  • vimの「* p/"+ pは期待どおりに貼り付けられません(ただし、vimではgit-for-windowsを介して動作します。以下の注を参照してください)

  • システムクリップボードからnanoとemacsに貼り付ける方法がわかりません(通常の貼り付けと出力をWindowsクリップにパイピングし、貼り付けてもこれら2つのプログラムには何も貼り付けられません-内部でヤンク/コピーした後にのみ貼り付けることができます)。
  • したがって、Windows用Ubuntuでの(すべての)種類のvimが問題になる可能性があります。

ありがとう

重要な注意:-git-for-windows経由で(Ubuntu bashの代わりに)vimに貼り付けると、(新しい行で)正しく貼り付けられます。しかし、Vim(vim-gtx、またはppaバージョン)はUbuntu適切に「* p」で貼り付けます。おそらく、vimへの移植に問題があるようです。

5
Samuel G

クリップボードからVimに複数行を貼り付けようとしている場合、この投稿で実用的なソリューションを見つけました。

https://stackoverflow.com/posts/49933556/edit

この質問はより客観的な答えに値すると思います。

貼り付けモードに入る

  • ESC
  • :セットペースト
  • 押す i
  • SHIFT + Insert (テキストをクリップボードにコピーして)


貼り付けモードの終了

  • ESC
  • :set nopaste
  • 押す i

テキストを貼り付けたので、もう一度入力できます。

1
Anis Smail

このチェーンを試してください:Control + R次にShift + =

0
xliiv

Bash変数$ EDITORを任意の選択肢(つまり、.

      export $EDITOR=/usr/bin/nano 

次に使用する Ctrl-xCtrl-e nanoを起動します。次に、保存後に複数行の選択を貼り付けて、編集からコマンドを入力してシェルに戻ります。 #pdateしばらくしてから、nanoのトリックは、2018年の1つのアップデートで述べたように、WSLの新しい機能に基づいていることを付け加えたいと思います。

0
Yurij

この質問は2017年6月に書かれたもので、多くの人がWSLのコピーと貼り付けのサポートを要求しています。応答として、Microsoftは2018年4月にアップデートをリリースしました。 Linux/WSLコンソールのコピーアンドペーストが届きます

Windows 10 Insiderビルド#17643の時点で、Linux/WSLコンソールとの間でテキストをコピー/貼り付けできます!!!

これは多くの皆さんが待ち望んでいた機能であることを知っています-コンソールの内部を解きほぐし、この機能を実装できるようにしてくれた忍耐と継続的なサポートに心から感謝します。

既存の動作を壊さないようにするには、コンソールの[オプション]プロパティページで[コピー/貼り付けとしてCtrl + Shift + C/Vを使用]オプションを有効にする必要があります。

注:新しい機能を使用するには、2018年9月のWindowsアップデートが必要です。

0

Cmder/ConEmuをターミナルエミュレータとして使用すると、この問題が発生しました。

貼り付けにはConEmu設定があり、デフォルトではCtrl + Vで1行、Shift + Insertで複数行に貼り付けられます。

次のスクリーンショットのように、貼り付けモード#2の設定をSingle lineからMulti linesに変更すると、これが修正されました。

ConEmu paste settings

0
roganartu