vi:将内容粘贴到文件顶部

4

在使用vi时,有一件事情一直困扰着我:黏贴(p)会将文本插入到当前行之后,这使得我无法在文件顶部插入内容。

例如,假设我要在几个文件的顶部添加UTF-8声明:

# -*- coding: utf-8 -*-

yy表示复制一行,yanked表示已经复制。很好。

我切换到另一个文件,使用gg跳转到顶部,然后按下p进行粘贴,最终得到类似于这样的结果:

import sys
# -*- coding: utf-8 -*-

这并不是我想要的。

现在,我总是发现我可以用vi做新的事情,所以我想这应该是我能够做到的事情,只是不知道如何做。然而,搜索并没有提供非常有用的结果,因为每个人都有一个vi(m)的速查表,其中包括p和gg。因此,我来到了SO:这是可能的吗?如果是,怎么做呢?


顺便说一下 - 在vim中基本上你想做的任何事情都是可能的。我最近学到的一些很酷的新东西包括将一行更改到某个点(ct?,其中?是您想要修改的字符),并返回到您的shell以执行命令(!cmd,即!ls)。 - nfm
嗯,是的,我想这是可能的;问题在于有太多你可以做的事情,有时很难在任何参考资料中找到你想要的东西。我也有点受限,因为我使用一个带有vi仿真的编辑器,所以vim特定的东西对我没有帮助。 - Xiong Chiamiov
2个回答

24

P(大写)表示在当前行上方/之前插入内容,而p(小写)表示在当前行下方/之后插入内容。

oO很相似。o在当前行后插入一行,并将光标移到该行,而O在当前行前插入一行,并将光标移到该行。我经常使用这些命令。

您可以使用[[, 1G, gg, 或者 :1<CR>跳转到文件的开头。


非常正确。我还记得很久以前不知道这个的日子。 - gahooa
啊哈!我知道o和O的区别,但是我没有想到p也有这样的问题。 - Xiong Chiamiov
1
@gahooa,我还记得那个黑暗时代,当时我不知道'a'的存在,总是用'i',每次想要添加东西时都需要删除行末的字符。 xD - strager
我记得当时使用了 "cl" 而不是 "s"。而且例子就像数不清一样多。 - Vlad Dogaru
1
gg 也会将光标移动到第一行。 - das_weezul
@das_weezul,你说得对。我发帖后已经学到了这一点。我会更新我的回答。谢谢! - strager

0

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