我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?
还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。
我正在处理两个文件,我需要从一个文件复制几行并粘贴到另一个文件。我知道如何复制(yy)和粘贴(p)在同一个文件。但这对不同的文件不起作用。这是怎么做到的?
还有,是否有一种方法可以剪切粘贴?我试着在谷歌上搜索过,但大多数资源只讨论复制粘贴。
当前回答
如果你在Windows上使用Vim,你可以使用以下方法访问剪贴板(MS复制/粘贴):
"*dd—切一行(或3dd切三条线)
*yy—复制一行(或3yy复制三行)
*p——在光标后的行上粘贴行(s)
*P—在光标前面的行上粘贴一行(s)
它可以让你在不同的Vim窗口之间或在Vim和PC应用程序(记事本,Microsoft Word等)之间粘贴。
其他回答
既然你已经知道如何剪切/拉出文本,下面是一些粘贴到另一个文件的想法:
编辑第一个文件,截取你想要的文本。然后在vi (:e /path/to/other/file)中打开第二个文件并粘贴它 在拆分窗口中打开这两个文件,并使用Ctrl + w在它们之间导航,向上/向下任意操作: Vi -o /path/to/file1 /path/to/file2 .使用实例 在第一个文件中,按Ctrl + w, s
进入命令模式并运行
:r! sed -n '<start_line_num>, <end_line_num> p' file_to_extract_text_from
例如,将文件名中的20-30行提取到当前打开的文件中
:r! sed -n '20, 30p' filename
目标:将一个文件的一部分保存到另一个文件中。
解决方案:
选择要保存的文本: 将光标定位到要开始选择的位置 按“v”选择字符或按“大写v”选择整行 将光标移动到要选择的内容的末尾 将所选文本保存到新文件中。类型:wSpace和新文件的名称。实际上你会看到 : <、> w new.txt 然后按Enter键
这些地图对我来说很有吸引力:
vmap <C-c> "*y " Yank current selection into system clipboard
nmap <C-c> "*Y " Yank current line into system clipboard (if nothing is selected)
nmap <C-v> "*p " Paste from system clipboard
因此,当我处于可视模式时,我选择我想要的行,并按Ctrl + c,然后按Ctrl + v将文本插入到接收文件中。你也可以用“*y”,但我认为有时候这个很难记住。
这也是有用的复制文本从Vim到剪贴板。
来源:使用临时文件在会话之间复制和粘贴
例如: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