VIM Ctrl-V与Windows粘贴冲突

时间:2009-01-09 02:47:24

标签: windows vim

我在Windows中使用VIM。问题是我想使用 Ctrl V 作为可视模式。但是,此密钥与Windows粘贴有冲突。如何将此键重置为VIM可视模式而不是粘贴。我更喜欢在我的_vimrc配置文件中设置它。

9 个答案:

答案 0 :(得分:139)

来自the VIM documentation

  

由于 CTRL V 用于粘贴,因此无法使用它来启动块状视觉   选择。您可以改用 CTRL Q 。你也可以在Insert中使用 CTRL Q   模式和命令行模式,以获得 CTRL V 的旧含义。但 CTRL Q   当用于控制流程时,它不适用于终端。

答案 1 :(得分:39)

检查你的_vimrc文件,看它是否来源mswin.vim。该脚本将^ v映射到粘贴。您可以删除_vimrc文件中的那一行,也可以直接在mswin.vim上禁用映射命令。

执行:帮助在vim上运行以获取更多信息。

答案 2 :(得分:24)

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

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

"source $VIMRUNTIME/mswin.vim
"behave mswin

我喜欢在那里添加黑色背景色系,所以它看起来更像我在终端中看到的(因为浅色背景在纸上很棒,但在背光屏幕上很糟糕): colorscheme koehler

答案 3 :(得分:20)

如果_vimrc中的这一行让您烦恼:

behave mswin

然后删除该行。

答案 4 :(得分:14)

我更喜欢到处都是相同的击键,所以我在.vimrc中使用它来覆盖mswin.vim:

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

答案 5 :(得分:7)

我不确定你能做些什么。你可以改用 Ctrl Q

答案 6 :(得分:3)

jop的建议(在默认的_vimrc文件中查找mswin.vim)和“Windows程序员”的建议(摆脱“行为mswin”行)的组合对我来说就像一个魅力。

(我的代表太低了,无法投票或合并他们 - 有人为我清理这个,或者我的代表更高时我会回来)

答案 7 :(得分:1)

这是解决此问题的现代方法。它适用于Vim / Neovim的终端版本,而不适用于GUI版本。如果您使用Microsoft的全新Windows Terminal(我强烈推荐这样做),则可以重新定义其键绑定以发挥自己的优势。设置文件的以下部分最初被注释掉。如您所见,如果您将其注释掉,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用于从剪贴板粘贴。

答案 8 :(得分:1)

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

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

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

这从粘贴和复制中解除了 Ctrl+VCtrl+C。但是,由于 defaults.json,您仍然可以在此解决方案中使用 Shift+Ctrl+CShift+Ctrl+V 进行复制和粘贴。

请参阅 Phil R 评论。一开始没看到他的解决方案。