如何在nvim中用鼠标中键复制高亮文本及相关问题
解决Neovim跨程序复制粘贴及清空寄存器问题
一、跨程序复制粘贴的简便配置
你当前的配置把系统主选择区(*)和剪贴板(+)都绑定到了clipboard选择区,导致Xterm里鼠标高亮的主选择区内容无法被Neovim读取。可以按以下步骤调整:
- 先确保系统安装了
xclip(大部分Linux发行版可通过包管理器安装,比如Debian/Ubuntu用sudo apt install xclip,Fedora用sudo dnf install xclip)。 - 替换你现有的剪贴板配置,只保留一行:
set clipboard=unnamed,unnamedplus
这个配置的作用是:
unnamed:让Neovim默认寄存器和系统**主选择区(*)**同步,鼠标高亮的内容会自动进入这个区域,切换到Neovim后用鼠标中键或Shift-Insert就能直接粘贴。unnamedplus:让默认寄存器同时和系统**剪贴板(+)**同步,兼容Ctrl+C/Ctrl+V的复制粘贴逻辑。
这样不管是Xterm里鼠标高亮的内容,还是其他程序用Ctrl+C复制的内容,都能在Neovim里正常粘贴。
二、清空寄存器的方法
1. 清空单个寄存器
在Neovim的命令模式下,执行对应命令即可:
- 清空默认寄存器(
"")::let @"" = '' - 清空系统主选择区(
*)::let @* = '' - 清空系统剪贴板(
+)::let @+ = '' - 清空指定命名寄存器(比如a寄存器):
:let @a = ''
2. 清空所有寄存器
如果需要一次性清空所有寄存器,可以在命令模式下执行这段循环代码:
for r in range(65,90) + range(97,122) + range(48,57) + ['"', '*', '+', '_', '/', '.', '%', '#', ':', '-'] execute 'let @'.nr2char(r).' = ""' endfor
内容的提问来源于stack exchange,提问作者user3236841
相关产品推荐
相关产品推荐

