我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?
还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。
我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?
还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。
当前回答
使用d的变化,如dd来切割。
要将一段行写入另一个文件,您可以使用:
:<n>,<m> w filename
其中<n>和<m>是数字(或符号),表示一行的范围。
要使用桌面剪贴板,请参阅+g命令。
其他回答
2017 - 05年更新:
我刚刚发现,如果你在vimrc文件中添加以下一行,
设置剪贴板=不知名的
那么Vim正在使用系统剪贴板。
我刚刚发现yank的方式不会工作在我复制内容之间不同的Vim实例窗口的方式。(至少,根据我的Vim知识,它不能工作。我不知道是否有其他方法使其工作)。
根据我的测试,yank方法只适用于在同一个窗口中打开多个文件的情况。
如果你想这样做,你最好使用操作系统的剪切复制过去的方式,如Ctrl + x, Ctrl + c(在Windows下)。
在同一个Vim实例中打开的两个缓冲区(==文件)之间复制文本是没有问题的:
简单地用y插入一个缓冲区(假设你之前在可视模式下标记了一个要复制的区域),然后用p粘贴到另一个缓冲区。只要它们在同一个Vim实例中,它也适用于不同的选项卡。
如何在同一个Vim实例中打开两个文件取决于你的系统:
在Win32上,如果你选择了两个或多个文件,上下文菜单中会有一个选项显示“Edit with one vim” 当您在控制台上时,您可以使用vim file1 file2实现它 如果使用Vim作为其他工具的编辑器,请确保指定——remote-silent选项,以确保在同一实例中打开所有文件
如果您在两个不同的Vim实例中打开了这两个文件,那么您必须使用系统剪贴板:在第一个Vim实例中,使用“+y”将文本插入系统剪贴板中(再次以可视模式标记要插入的区域),然后转到第二个Vim并将剪贴板粘贴在那里:“+p”。
我的场景是,我需要拷贝中间n行,n未知,从文件1到文件2。
:'a,'bw /name/of/output/file.txt
这些都是很好的建议,但如果您知道文本在另一个文件中的位置,则可以轻松使用sed。: r !sed -n '1,10 p' < input_file.txt这将在一个已经打开的文件中插入10行到光标当前位置。
您可以打开另一个文件并键入:r file_to_be_copied_from。或者你可以缓冲。或者转到第一个文件,在你想复制的那行,输入“qY”,转到你想粘贴的文件,输入“qP”。
buffer_name,复制到缓冲区。Y是拉,P是放。希望有帮助!