我已经安装了"WSL Debian",并在其中安装了neovim
软件包。该软件包安装了一个不支持剪贴板的nvim
文本编辑器。我可以通过以下方式进行验证:
$ nvim --version
NVIM 0.1.7
Build type: None
Compilation: /usr/bin/cc -g -O2 -fdebug-prefix-map=/build/neovim-HEl3mV/neovim-0.1.7=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -DDISABLE_LOG -Wconversion -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wvla -fstack-protector-strong -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -DHAVE_CONFIG_H -D_GNU_SOURCE -I/build/neovim-HEl3mV/neovim-0.1.7/build/config -I/build/neovim-HEl3mV/neovim-0.1.7/src -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/build/neovim-HEl3mV/neovim-0.1.7/build/src/nvim/auto -I/build/neovim-HEl3mV/neovim-0.1.7/build/include
Compiled by pkg-vim-maintainers@lists.alioth.debian.org
Optional features included (+) or not (-): +acl +iconv +jemalloc +tui
For differences from Vim, see :help vim-differences
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/usr/share/nvim"
请注意,在“包括的可选功能”下没有“+clipboard”条目,这意味着我的nvim默认情况下不支持剪贴板。然后我打开nvim编辑器并执行命令“:CheckHealth”以获取以下反馈:
## Clipboard
- WARNING: No clipboard tool found. Using the system clipboard won't work.
- SUGGESTIONS:
- See |clipboard|
这告诉我 (a) 剪贴板当前不起作用,(b) 要在 nvim
中使用命令 :help clipboard
获取更多信息。所以我执行了这个命令,然后可以看到这个:
Clipboard access is implicitly enabled if any of the following clipboard tools
are found in your `$PATH`.
- xclip
- xsel (newer alternative to xclip)
- pbcopy/pbpaste (Mac OS X)
- lemonade (for SSH) https://github.com/pocke/lemonade
- doitclient (for SSH) http://www.chiark.greenend.org.uk/~sgtatham/doit/
The presence of a suitable clipboard tool implicitly enables the '+' and '*'
registers.
If you want to ALWAYS use the clipboard for ALL operations (as opposed
to interacting with the '+' and/or '*' registers explicitly), set the
following option:
set clipboard+=unnamedplus
这告诉我,即使没有编译剪贴板支持,只需安装例如 xsel
,就可以隐式启用它。因此我这样做:
$ sudo apt install xsel
这也告诉我要将以下行放入我的
~/.config/nvim/init.vim
文件中:
$ set clipboard+=unnamedplus
看起来这个问题应该已经解决了,但是此时事情仍然不起作用。为什么?这是因为xsel
(正如其名称所示)是一个需要X服务器才能运行的图形应用程序!
所以我们要为Windows安装X服务器!一种选择是简单地安装"VcXSrv"(链接)。这将在Windows开始菜单中创建一个"Xlaunch"启动器。我们运行此启动器,直到"Extra settings"窗口,然后只需像下面展示的那样勾选所有框并点击"Next"。
现在我们将通过按"Save Configuration"来存储我们的"Xlaunch"配置,并确保将我们的配置存储为:
C:\Users\<Username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\config.xlaunch
这将确保每次Windows启动时,X服务器都会以相同的配置启动!请注意,在启动“WSL Debian”之前,必须运行X服务器。
现在我们点击“完成”,此会话将运行X服务器。
现在在“WSL Debian”内部,我们只需要导出一个DISPLAY环境变量,这是X服务器应用程序(例如xset)搜索可工作的X服务器会话的位置。我们的任务是将它们指向我们的Windows机器!因此,我们可以像这样导出DISPLAY:
LOCAL_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
export DISPLAY=$LOCAL_IP:0
如果您想要的话,可以在“WSL Debian”上的~/.bashrc
文件中添加这两行内容,这样它们将始终在打开交互式终端时被导出。
现在一切都应该正常工作了。
:set mouse=
。 - Christian Gibbonsclip.exe
来访问剪贴板?如果可以,选择要复制的行,然后运行:w !clip.exe
。(clip.exe
建议来源:https://www.raymondcamden.com/2017/10/19/copying-to-clipboard-with-windows-subsystem-for-linux) - filbrandentmux
中运行vim
。Tmux有一个“vim”模式的复制粘贴系统,您可以使用vim移动命令进行复制。有一些配置选项可以让tmux
使用在WSL下可用的clip.exe
发送到剪贴板。它并不完美,实际上vim
剪贴板没有连接,您必须使用tmux
系统,但您也可以利用tmux
终端多路复用器的优势,在任何地方都可以获得一致可靠的环境。如果您感兴趣,请在评论中请求,我将发布一个描述设置的答案。 - NeilG