如何仅在 vim 中撤消粘贴的文本?

Jav*_*mae 11 osx vim

TL; 博士; 版本 - 如何撤消从操作系统复制缓冲区粘贴的文本,而不撤消进入插入模式后输入的其他文本?

更长的描述:

  1. 将某些内容放入您的操作系统复制缓冲区(例如突出显示某些文本并Command-c在 Mac 上执行)
  2. 在 vim ( i) 中进入插入模式
  3. 输入一些东西(例如asdf
  4. 在不退出插入模式的情况下,从复制缓冲区粘贴到 vim(Command-v在 Mac 上)
  5. escape
  6. 尝试撤消粘贴 ( u)

它会撤消上次进入插入模式时的所有内容。换句话说,它清除了asdf我粘贴的所有文本。

如何刚刚撤消粘贴文本?在粘贴文本之前,我是否必须始终退出插入模式并返回,以便可以选择撤消粘贴的文本?

Ing*_*kat 5

一种方法是在粘贴之前明确退出并返回到插入模式。如果扩展粘贴命令,还可以在粘贴之前自动设置撤消点:

" Any text fragment pasted in insert mode should be undone separately, without
" destroying what was typed before.
inoremap <C-R> <C-G>u<C-R>
Run Code Online (Sandbox Code Playgroud)

以上是针对内置i_CTRL-R命令的。我不知道Command-vMacVim 中是如何实现的,但<C-G>u:imap命令前面应该可以达到相同的效果。