我尝试将内容从 Windows 系统剪贴板粘贴到终端文本编辑器(如 vim(或其剪贴板和 xterm-clipboard 允许变体如 vim-gtx)、nano 或 emacs)中,但无济于事。
我主要尝试使用 vim-gtx,因为 vim 是我最喜欢的编辑器 -> 但无论我尝试什么方法,无论是:
- 使用 :set paste 并使用 Ctrl-v、Shift-ctrl-v 进行粘贴(这是唯一可以粘贴剪贴板内容的方法)
- 使用“*p 或 "+p”粘贴(不粘贴)
- 将输入复制到 clip.exe(已尝试过 xclip 但该实用程序似乎在 WSL 上不起作用),然后粘贴到 vim 中。
如上所述,只有在插入模式下按下 Ctrl-v 时,从剪贴板粘贴才有效(Shift-Ctrl-v 插入“^”,而“*p 和 "+p 插入“i”字符或“^?”),并且粘贴的输出总是粘贴到一行上。
例如,从 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 是粘贴内容的唯一方法,但粘贴只会发生在一行上
vim 中的“*p / "+p”无法按预期粘贴(但可以通过 git-for-windows 在 vim 中使用,请参阅下面的注释)
- 我不确定如何从系统剪贴板粘贴到 nano 和 emacs 中(普通的粘贴和管道输出到 Windows 剪辑,然后粘贴不会在这两个程序中粘贴任何内容 - 我只能在内部提取/复制后粘贴)。
- 因此,这可能是 Windows 版 Ubuntu 上各种 vim 的问题。
谢谢
重要提示:-当通过 git-for-windows(而不是 Ubuntu bash)在 vim 上使用“*p”粘贴时,它会正确粘贴(带有新行)。但通过 Ubuntu 的 Vim(vim-gtx 或 ppa 版本)无法正确使用“*p”粘贴 - 这看起来可能是 vim 移植到
答案1
如果你想从剪贴板粘贴多行到 Vim,我找到了一个可行的解决方案在 StackOverflow 上发帖。
我相信这个问题值得一个更客观的答案。
进入粘贴模式
- ESC
- :设置粘贴
- 按i
- SHIFT+ Insert(文本已复制到剪贴板)
**退出粘贴模式**
- ESC
- :设置不粘贴
- 按i
您已粘贴文本并可以再次输入。
答案2
答案3
尝试这个链:Control
+R
然后Shift
+=
答案4
将 Bash 变量 $EDITOR 定义为任意选择,即
export $EDITOR=/usr/bin/nano
然后使用Ctrl-x Ctrl-e启动 nano。然后您可以在保存后粘贴多行选择,然后使用从编辑中填充的命令返回到 shell。# 更新 过了一会儿,想补充一下,nano 的技巧是基于 WSL 的新功能,正如 2018 年更新中提到的那样。