我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?
还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。
我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?
还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。
当前回答
例如:fileA和fileB—从fileA的第25行开始,复制50行,粘贴到fileB
fileA
Goto 25th line
25G
copy 50 lines into buffer v
"v50yy
Goto fileB
:e fileB
Goto line 10
10G
paste contents of buffer v
"vp
其他回答
如果您想复制文件的一部分并将该内容粘贴到另一个文件的中间,可以使用这种方法。
:linenumber,linenumber write newfile
例子:
:2,34 write temp1
Or
:'mark, 'mark write newfile
例子:
:'a,'b write temp1
现在这些行被复制到另一个文件。 如果你想在复制后删除这些行,你可以这样做
:linenumber1,linenumber2 d
Or
:'mark1,'mark2 d
现在,转到另一个文件。 然后将光标保持在要粘贴的行上。
Type
:r!cat temp1
现在,临时文件的内容被粘贴到这里。 在粘贴内容之后,可以从命令行本身删除临时文件。
:!rm temp1
如果您想多次复制和粘贴,这将有所帮助。
我的场景是,我需要拷贝中间n行,n未知,从文件1到文件2。
:'a,'bw /name/of/output/file.txt
进入命令模式并运行
:r! sed -n '<start_line_num>, <end_line_num> p' file_to_extract_text_from
例如,将文件名中的20-30行提取到当前打开的文件中
:r! sed -n '20, 30p' filename
另一种方法是在两个分割缓冲区中打开两个文件,并在可视化选择感兴趣的行后使用下面的“snippet”。
:vnoremap <F4> :y<CR><C-W>Wr<Esc>p
例如:fileA和fileB—从fileA的第25行开始,复制50行,粘贴到fileB
fileA
Goto 25th line
25G
copy 50 lines into buffer v
"v50yy
Goto fileB
:e fileB
Goto line 10
10G
paste contents of buffer v
"vp