如何将vi中的文本复制/粘贴到其他应用程序中

3

2
我刚写了一本关于如何做这件事的书,但你提供的两个链接同样回答了这个问题。 - jahroy
3个回答

8
我确定有很多方法,但我使用“标记”和“寄存器”来实现。
标记
您可以使用m后跟要使用的标记名称在文件中的任何位置放置标记。
您可以使用a到z(大写和小写)之间的任何字母来命名您的标记。
您可以使用'键转到包含标记的行。
例如,mx标记了一个带有标记x的行,'x将光标移动到包含标记x的行。
您可以使用反引号键精确地定位标记的位置:
例如,要从当前光标位置复制到包含标记x的行,您可以输入y'x。
寄存器
为了使用剪贴板,您需要使用表示您可以存储文本的位置的寄存器。
就像您可以为每个字符使用不同的标记一样,您可以为您复制文本的寄存器命名。
在复制/粘贴时,您可以使用“键”引用寄存器。
例如,“ay'x”会将光标和行x之间的文本复制到寄存器a中。
剪贴板由特殊寄存器表示:根据您的环境,它可能是*或+。
要将光标和包含标记x的行之间的文本复制到剪贴板,请输入以下内容:“+”+y'x。
这表示:使用缓冲区+(剪贴板)来存储光标和包含标记x的行之间的文本。
完成后,您的文本将在剪贴板中。您可以使用CONTROL-V将其粘贴到其他应用程序中。
注意:在某些环境中,剪贴板由名为*的缓冲区表示。
这可能听起来很压抑,但一旦您习惯了它,它非常强大。
我每天使用它数百次。
如果您正在编辑具有几个关键点的文件,则可以使用不同的标记标记文件的每个部分,并快速移动光标以编辑所需的代码。
同样,如果您有几个需要重复复制的文本片段,则可以将每个文本片段存储在不同的寄存器中,以使您的粘贴更加高效。

4
您可以使用+寄存器进行复制/粘贴(了解更多信息:访问系统剪贴板"+gyy将复制一行并将其放入+寄存器。您可以在正常模式下使用"+p或在插入模式下使用Ctrl+r +在其他窗口中粘贴。
如果您不想使用分割窗口,在窗口间粘贴的唯一方法是使用系统剪贴板。

1
你可以使用vim标签以及分屏窗口。 - ostler.c
4
需要注意的是,在Linux系统中有两个剪贴板。常规的剪贴板可以通过使用CTRL+CCTRL+V来访问,它位于+寄存器中。另一个剪贴板存储最后选定的文本,并且可以通过鼠标中键粘贴。在Vim编辑器中,这个剪贴板被映射到*寄存器上。 - Idan Arye
MacVim使用缓冲区,因此可以复制/粘贴到TextEdit。另一方面,控制台VI不允许将内容复制/粘贴到TextEdit。 - Vlad Vinnikov

0

@up已经详细讲解了这个主题。我只想补充一点,大多数相关组合都与系统键组合相关,可以在Gvim的配置中找到(例如,Windows映射的CTRL+C CTRL+V等在mswin.vim中)。


为什么要费这么大的劲,当已经有很多更简单的方法了呢? - bansi
痛苦?我说的是,所有映射涉及GUI系统命令的内容都列在文件(已注释)中。是的,没有互联网时我也能应对 ;) - kompowiec

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