从剪贴板粘贴到vim会截断前几行

17

我在OSX的终端中使用vim,我的.vimrc文件是空的。我尝试从剪贴板中粘贴以下内容:

#!/bin/bash
set -e
set -o pipefail

npm run precommit

使用

:set paste

但在 vim 中,使用 cmd-v 粘贴的是

et -e
set -o pipefail

npm run precommit

有人知道出了什么问题吗?


你是不是忘记进入插入模式了? - quickshiftin
不,即使在 cmv-v 之前进入插入模式也会产生相同的结果。编辑:我尝试重新开始并成功了。我不知道之前错过了什么,因为在发布这里之前我尝试了多次。 - kkSlider
3个回答

24

在编辑文件之前,您必须进入插入模式,可以通过按下i键来实现。


为什么不进入插入模式,它会粘贴但不是整个块? - kkSlider
4
如果在粘贴的文本中遇到像 io 等单词,它就会进入插入模式。 - Amit
1
如果您不进入插入模式,Vim 将在正常模式下逐个执行每个字母,因此在您的情况下 #!/bin/bash 的意思是:查找单词的上一个出现位置 (#),不记得 ! 在插入模式下的作用,(/) 将开始搜索,然后 bin/bash 将成为新行后搜索的查询。什么也找不到,然后是第二行 "set -e",字母 (s) 表示替换,等待输入并进入插入模式,然后粘贴您剪贴板的其余部分。 - eugecm
谢谢澄清,现在非常清晰易懂了。 - kkSlider

12
如果您在OSX上使用vim,您可以将以下内容添加到您的.vimrc文件中: set clipboard+=unnamed 完成后,vim将默认使用系统剪贴板进行粘贴操作。这意味着您无需先进入insert模式,而是可以直接使用p进行粘贴。同时,如果您在vim内部执行了yank(复制)操作,则可以在其他地方进行粘贴。
我没有在其他操作系统上测试过,如果有人测试过,请随时添加评论...

5
我遇到了同样的问题,解决方法是在运行vim之前输入“reset”来重置终端。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接