我在网页上复制了一段代码,想粘贴到vim中。
第一次粘贴的时候,总会丢失复制内容的起始几个字符,紧接着第二次粘贴则正常,是什么原因?
下面是<title>Hello, world!</title>
为粘贴内容的测试结果,共粘贴两次,可以看到,第一次(前面两行)很奇怪,第二次(第三行)正常。
1
2 , world!</title>
3 <title>Hello, world!</title>
左侧的1 2 3为行号
我在网页上复制了一段代码,想粘贴到vim中。
第一次粘贴的时候,总会丢失复制内容的起始几个字符,紧接着第二次粘贴则正常,是什么原因?
下面是<title>Hello, world!</title>
为粘贴内容的测试结果,共粘贴两次,可以看到,第一次(前面两行)很奇怪,第二次(第三行)正常。
1
2 , world!</title>
3 <title>Hello, world!</title>
左侧的1 2 3为行号
打开 vim 后默认是命令模式。
:
,冒号出现在左下角,此时输入set paste
来设置。进入编辑模式
i
在光标处开始进入编辑模式a
从光标位置的下一个字符开始(没有内容时无效)进入编辑模式o
光标移动到下一行行首并进入编辑模式进入编辑模式,后直接使用shift+insert
进行粘贴。
如果再需要回到命令模式,按 Esc。
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答795 阅读✓ 已解决
2 回答3.2k 阅读
简单原因: 你没有进入编辑模式就试图编辑文件, 所以产生了你意想不到的结果.
具体原因:
正常模式
.<title>Hello, world!</title>
, 相当于向 vim 申请执行该指令, vim 会顺次执行. 在正常模式下,<
和>
表示缩进, 但因为你没有选中文本, 因此什么也没有发生, 两个中括号中间的title
是无效的.Hell
也不会有具体效果. 但执行到o
时,o
表示在光标所在行的下一行进入插入模式
, 剩下的内容被当做插入文本处理. 因此你文件中的第一行是空白行, 第二行是o
后面的内容, 即, world!</title>
插入模式
, 且你并未点击ESC
退出该模式, 因此在你继续进行第二次粘贴的时候, 就会直接执行插入操作, 这行被完整的插入进去了.疑问:
如果两次粘贴中间没有其他操作, 那么第二次粘贴时不应该会另起一行. 我猜测你应该敲了一个回车符后进行的粘贴.
建议:
了解下 vi 操作基础.