与 Windows 粘贴的 Ctrl-V 冲突

我在 Windows 中使用 VIM。问题是我想使用 CtrlV作为可视化模式。但是,此键与 Windows 粘贴有冲突。我如何才能重置这个关键回到 VIM 视觉模式,而不是粘贴。我更喜欢在我的 _ vimrc 配置文件中设置它。

81686 次浏览

我不知道你能做些什么,不过你可以用 CtrlQ代替。

来自 VIM 文档:

因为 CTRLV是用来粘贴的,所以您不能使用它来启动一个块状 Visual 选择。您可以使用 CTRLQ代替。您也可以在插入中使用 CTRLQ 模式和命令行模式来获得旧的意思 CTRLV。但是 CTRLQ 当它用于控制流时,对终端不起作用。

如果你的 _ vimrc 中的这句话让你感到困扰:

behave mswin

那就删掉这一行。

检查您的 _ vimrc 文件,看看它是否源代码 mswin.vim。该脚本将 ^ v 映射到粘贴。您可以删除 _ vimrc 文件中的这一行,或者直接在 mswin.vim 上禁用映射命令。

做一个: 帮助表现在 vim 上获得更多信息。

Jop 的建议(在 default _ vimrc 文件中查找 mswin.vim)和“ Windows 程序员”的建议(删除“表现 mswin”行)的组合对我来说非常有效。

(我的声望太低,不能投他们的票,也不能合并他们——谁来帮我清理一下,否则等我的声望再高一点,我就回来了)

在 Unix 中使用可视化模式(和其他东西)需要 JOP 和 Windows 程序员的建议。

在 Windows 上的 GVim 中,转到编辑菜单,单击启动设置,然后注释掉特定于 Windows 的垃圾(使用 vimrc 注释字符,这是一个双引号)。Vim 文件是指定 ctrl-v覆盖的地方,行为 mswin 选项使得箭头键不会像您期望的那样应用运动(它还会改变鼠标选择行为)。

"source $VIMRUNTIME/mswin.vim
"behave mswin

我也喜欢在这里添加一个黑色背景的配色方案,这样它看起来更像我在终端机上看到的(因为浅色背景在纸上很好,但在背光屏幕上很糟糕) : colorscheme koehler

我喜欢在任何地方按相同的键,所以我在我的. vimrc 中使用这个来覆盖 mswin.vim:

if has('win32')
" Avoid mswin.vim making Ctrl-v act as paste
noremap <C-V> <C-V>
endif

这里有一个现代解决这个问题的方法。它适用于 Vim/Neovim 的终端版本,而不是 GUI 版本。如果你使用微软的新式 视窗终端(我强烈推荐它),您可以重新定义它的关键绑定,使其对您有利。设置文件的以下部分最初是 没有注释掉的。如果你把它注释掉,就像我展示的那样,Ctrl+V就变成了我们都知道和喜欢的 Vim 中的矩形视觉选择键。

// Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json.
// These two lines additionally bind them to Ctrl+C and Ctrl+V.
// To learn more about selection, visit https://aka.ms/terminal-selection
//{
//    "command": {
//        "action": "copy",
//        "singleLine": false
//    },
//    "keys": "ctrl+c"
//},
//{
//    "command": "paste",
//    "keys": "ctrl+v"
//}

奇怪的是。我希望这会改变在终端 Vim 之外的 Ctrl+V的行为,所以我检查了一下。它仍然是一个粘贴,但它不同于 Ctrl + Shift + V 粘贴。然而,在 Vim 内部,一切都很好: Ctrl+V用于矩形选择; "*PCtrl+Shift+VRight Mouse Button用于粘贴剪贴板。

对于 Windows 终端(PowerShell) ,单击 Shell-Tab 旁边的下拉箭头并选择设置。在 settings.json"actions"部分,你可以注释掉下面几行,这样它们就会说:

// { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },

还有

// { "command": "paste", "keys": "ctrl+v" },

这将从粘贴和复制中解除 Ctrl+VCtrl+C的界限。然而,由于 defaults.json,您仍然能够使用 Shift+Ctrl+CShift+Ctrl+V的复制和粘贴与此解决方案。

请看菲尔 R 的评论。没有看到他的解决方案摆在首位。

对于 Windows 上由 CTRL+V粘贴的虚拟机:

简单地做 CTRL+SHIFT+V... 工作立即,类似于原来的 CTRL+V视觉选择。 < br > < a href = “ https://stackoverflow. com/questions/426896/vim-ctrl-v- 冲突-与-windows-粘贴 # 注释57203709 _ 426910”> < em > < sup > ^ 来源: stevesliva 提到的评论。

如果特定于 Windows 的映射作为一个整体困扰您,您可以设置

let g:skip_loading_mswin = 1

在 vimrc 中禁用完全加载它(mswin.vim)。