我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?
还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。
我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?
还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。
当前回答
进入命令模式并运行
:r! sed -n '<start_line_num>, <end_line_num> p' file_to_extract_text_from
例如,将文件名中的20-30行提取到当前打开的文件中
:r! sed -n '20, 30p' filename
其他回答
使用d的变化,如dd来切割。
要将一段行写入另一个文件,您可以使用:
:<n>,<m> w filename
其中<n>和<m>是数字(或符号),表示一行的范围。
要使用桌面剪贴板,请参阅+g命令。
在。vimrc中设置viminfo:
set viminfo=%,<1000,'10,/50,:100,h,f0,n~/.viminfo
这将在~/中保留多达1,000行被拉取的东西(您的“寄存器”)。viminfo文件,当你退出Vim。当您启动Vim时,它会恢复,因此您可以将它粘贴到另一个文件中。
请参阅viminfo文档,了解它可以跨会话持久化的所有其他内容。
我的场景是,我需要拷贝中间n行,n未知,从文件1到文件2。
:'a,'bw /name/of/output/file.txt
下面的选项在大多数时候都适用,也适用于以后的粘贴。
"xnyy
x - buffer name
n - number of line to Yank - optional
被抽走的行将存储在缓冲区'x'中。 它可以在编辑的任何地方使用。
要将行粘贴到另一个文件中,
:e filename&location
例子: 在当前编辑中键入以下命令
:e /u/test/Test2.sh
and paste using "xP
P - before cursor
p - after cursor
完成操作
打开文件1:
vi Test1.sh
a10yy
-Yanked 10 lines
-现在打开当前编辑的第二个文件
*:e /u/test/Test2.sh*
-移动光标到你需要粘贴的行
*"ap*
缓冲区'*a*'中的行将被复制到当前游标pos之后
进入命令模式并运行
:r! sed -n '<start_line_num>, <end_line_num> p' file_to_extract_text_from
例如,将文件名中的20-30行提取到当前打开的文件中
:r! sed -n '20, 30p' filename