为什么 Shift insert 只能在插入模式下才能完全发挥作用?

为什么 Shift insert 只能在插入模式下才能完全发挥作用?

刚刚尝试使用 vim 将一些内容(在 CentOS 服务器上的 Git Bash 中)粘贴到文件中。
我刚刚打开文件并尝试使用shift+ insert,我注意到前半部分(大致)被截断了,但如果我将 vim 设置为插入模式并点击shift+,insert所有内容都会完美粘贴。
只是想知道这是为什么?

谢谢

答案1

+ShiftInsert"粘贴“进入终端的行为方式类似 - 它们模拟按键。

这是一个重要的区分,终端往往无法做出这一区分——您是在打字还是粘贴?笔记:一些终端支持“括号内的粘贴“模式,在@Josh的评论之后,我甚至遇到了一个vim 插件括号内粘贴终端您可能对此感兴趣。

您粘贴的数据将丢失,直到进入插入模式的第一个字符。您还可能会发现光标已移动,文件的其他部分已更改(例如:更改大小写/已删除/等)...

总之,如果您要粘贴想要插入到文件中的文本,请先进入插入模式。


尝试复制以下文本并将其粘贴到运行 Vim 的终端中(不是插入模式):

hello how are you

其结果与在键盘上键入相同字母相同:

粘贴到 Vim 中的结果

在这种情况下,它会让您处于插入模式......

现在尝试退出插入模式 - Esc- 并粘贴以下内容

/are
n

这将搜索“are”:

粘贴到 Vim 中的结果

现在粘贴这个:

:0
dG

噢不...一切都消失了!

全没了


您还会发现,如果启用了缩进,则将代码块粘贴到 vim(在插入模式下)中会缩进太多 - 它会自动缩进,然后您粘贴的代码将包含缩进。

def my_print(message):
    print(message)
    print('done...')

粘贴代码

要解决此问题,请使用:set paste:set nopaste命令

粘贴代码(粘贴模式)

相关内容