3

是否可以在不使用 :vs 的情况下复制/粘贴文本?如果我打开了两个 vi 窗口,我可以用鼠标复制/粘贴文本。我怎样才能用键盘做到这一点?

我发现了两个与此类似的现有问题,但都没有回答我的问题。
如何将vi中的代码复制到剪贴板
将内容从一个文件复制并粘贴到VI中的另一个文件

4

3 回答 3

8

我敢肯定有很多方法,但我使用marksand来做到这一点registers

分数

您可以在文件中的任何位置使用标记,m后跟要使用的标记的名称。

您可以使用 a 和 z(大写和小写)之间的任何字母来命名您的标记。

您可以使用 键转到包含标记的行'

例如,mx标记 x标记一行并将 'x光标移动到包含标记 x的行。

您可以使用反引号键转到标记的确切位置:`

例如,要从当前光标位置拉到包含标记 x 的行,您可以输入y'x

寄存器

为了使用剪贴板,您需要使用寄存器,它表示您可以存储您拉出的文本的位置。

就像您可以为每个字符使用不同的标记一样,您可以命名要提取文本的寄存器。

"您在拉/放时使用键来引用寄存器。

例如"ay'x,将在光标和包含 x 的行之间拉出文本以注册 a

剪贴板由一个特殊的寄存器表示:*或者+取决于您的环境。

要将光标和包含标记 x 的行之间的文本拉到剪贴板,请输入以下内容:"+y'x

这表示:使用缓冲区+(剪贴板)来存储光标和包含标记 x 的行之间的文本。

完成此操作后,您的文本将在剪贴板中。您可以使用 CONTROL-V 将其粘贴到其他应用程序中。

注意:在某些环境中,剪贴板由名为*.


这可能听起来势不可挡,但一旦你习惯了它,它就会非常强大。

我每天使用数百次。

如果您正在编辑具有多个关键兴趣点的文件,您可以用不同的标记标记文件的每个部分,并在需要编辑的代码之间快速移动光标。

同样,如果您需要重复复制多段文本,则可以将每段文本存储在不同的寄存器中,以提高粘贴效率。

于 2012-05-29T17:28:12.453 回答
4

您可以使用+寄存器复制/粘贴(阅读更多:访问系统剪贴板

"+gyy将拉出一条线,并将其放入+寄存器中。您可以"+p在正常模式下或Ctrl+r +在插入模式下粘贴到其他窗口中。

如果您不想使用拆分窗口,除了使用系统剪贴板之外,真的没有其他方法可以在窗口之间粘贴。

于 2012-05-29T17:20:19.603 回答
0

@up 用尽了这个主题。我可以补充一点,大多数与系统组合键相关的组合在 Gvim 的配置中找到你(例如,用于 CTRL+C CTRL+V 等的 Windows 映射在 mswin.vim 中)

于 2015-12-12T14:22:05.340 回答