我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?

还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。


当前回答

在同一个Vim实例中打开的两个缓冲区(==文件)之间复制文本是没有问题的:

简单地用y插入一个缓冲区(假设你之前在可视模式下标记了一个要复制的区域),然后用p粘贴到另一个缓冲区。只要它们在同一个Vim实例中,它也适用于不同的选项卡。

如何在同一个Vim实例中打开两个文件取决于你的系统:

在Win32上,如果你选择了两个或多个文件,上下文菜单中会有一个选项显示“Edit with one vim” 当您在控制台上时,您可以使用vim file1 file2实现它 如果使用Vim作为其他工具的编辑器,请确保指定——remote-silent选项,以确保在同一实例中打开所有文件

如果您在两个不同的Vim实例中打开了这两个文件,那么您必须使用系统剪贴板:在第一个Vim实例中,使用“+y”将文本插入系统剪贴板中(再次以可视模式标记要插入的区域),然后转到第二个Vim并将剪贴板粘贴在那里:“+p”。

其他回答

如果你在Windows上使用Vim,你可以使用以下方法访问剪贴板(MS复制/粘贴):

"*dd—切一行(或3dd切三条线)

*yy—复制一行(或3yy复制三行)

*p——在光标后的行上粘贴行(s)

*P—在光标前面的行上粘贴一行(s)

它可以让你在不同的Vim窗口之间或在Vim和PC应用程序(记事本,Microsoft Word等)之间粘贴。

在同一个Vim实例中打开的两个缓冲区(==文件)之间复制文本是没有问题的:

简单地用y插入一个缓冲区(假设你之前在可视模式下标记了一个要复制的区域),然后用p粘贴到另一个缓冲区。只要它们在同一个Vim实例中,它也适用于不同的选项卡。

如何在同一个Vim实例中打开两个文件取决于你的系统:

在Win32上,如果你选择了两个或多个文件,上下文菜单中会有一个选项显示“Edit with one vim” 当您在控制台上时,您可以使用vim file1 file2实现它 如果使用Vim作为其他工具的编辑器,请确保指定——remote-silent选项,以确保在同一实例中打开所有文件

如果您在两个不同的Vim实例中打开了这两个文件,那么您必须使用系统剪贴板:在第一个Vim实例中,使用“+y”将文本插入系统剪贴板中(再次以可视模式标记要插入的区域),然后转到第二个Vim并将剪贴板粘贴在那里:“+p”。

另一种方法是在两个分割缓冲区中打开两个文件,并在可视化选择感兴趣的行后使用下面的“snippet”。

:vnoremap <F4> :y<CR><C-W>Wr<Esc>p

目标:将一个文件的一部分保存到另一个文件中。

解决方案:

选择要保存的文本: 将光标定位到要开始选择的位置 按“v”选择字符或按“大写v”选择整行 将光标移动到要选择的内容的末尾 将所选文本保存到新文件中。类型:wSpace和新文件的名称。实际上你会看到 : <、> w new.txt 然后按Enter键

使用d的变化,如dd来切割。

要将一段行写入另一个文件,您可以使用:

:<n>,<m> w filename

其中<n>和<m>是数字(或符号),表示一行的范围。

要使用桌面剪贴板,请参阅+g命令。