从剪贴板粘贴的Vim命令插入命令而不是执行命令

o4tp2gmn  于 2023-01-26  发布在  其他
关注(0)|答案(3)|浏览(135)

为了快速执行一些命令,我想在某个地方输入它们,然后将它们粘贴到vim中执行。(几年或10年前)这是有效的。现在,VIM进入插入模式,我的命令被插入到我的文件中。我知道我可以有宏,但对于快速重复一些命令,这是非常有用的。找不到任何关于它的东西,因为当要求vim和粘贴时,只会显示与以下内容相关的答案:设置粘贴等。

/foo
yy?bar
p/foo
j

在命令模式下粘贴时,应该搜索下一个foo,拖动该行,向后搜索下一个bar,然后粘贴拖动的foo-line,再转到该foo-line后面。我不想知道解决方法(makros,脚本,等等),我想知道如何禁用(暂时)vim区分用键盘输入的文本和粘贴的文本。

dgsult0t

dgsult0t1#

这是“括号粘贴模式”的结果。请参见:help xterm-bracketed-paste
通过清除't_BE'禁用“括号粘贴模式”:

set t_BE=
ca1c2owp

ca1c2owp2#

如果您的Vim已经编译为支持剪贴板,那么您可以保持't_BE'不变,而是通过@*@+将剪贴板作为寄存器来执行,这可能是处理此类用例的更“惯用”的方式。
有关详细信息,请参见:h @

n9vozmp4

n9vozmp43#

我也有同样的问题...我有大量的VIM命令文件,我用它们来批量重新格式化数百个纯文本文件。粘贴命令,下一个文件,粘贴命令,下一个文件,并在这样做编辑数百个文件,与给定的一组vim命令,在短短一分钟左右...
然后这一切突然停止工作,因为括号粘贴模式被添加...(我相信是补丁8. 0. 0238的一部分)。
然而,我仍然喜欢在插入模式下粘贴文本的附加功能,没有VIM自动缩进使插入的文本一团糟,所以也不想失去它...
我的解决方案是在正常或命令模式下禁用粘贴,而在插入模式下保持括号粘贴。

nmap <PasteStart> <NOP>
  nmap <PasteEnd>   <NOP>
  cmap <PasteStart> <NOP>
  cmap <PasteEnd>   <NOP>

相关问题