mac*_*cha 238 vi vim cut copy-paste
我正在处理两个文件,我需要从一个文件中复制几行并粘贴到另一个文件中.我知道如何在同一个文件中复制(yy)和粘贴(p).但这不适用于不同的文件,这是怎么做的?
还有,有没有办法剪贴?我试过谷歌搜索,但大多数资源只谈复制粘贴.
Ada*_*kin 203
由于您已经知道如何剪切/抽取文本,因此以下是将其粘贴回另一个文件的一些想法:
:e /path/to/other/file)中打开你的第二个文件并粘贴它在拆分窗口中一起打开两个文件,并使用Ctrl+ w,Up/ 在它们之间导航Down:
vi -o /path/to/file1 /path/to/file2Jay*_*ayG 49
如果您在Windows中使用VIM,则可以使用以下命令访问剪贴板(MS复制/粘贴):
"*dd - 剪线(或3dd剪3线)
"*yy - 复制一行(或3yy复制3行)
"*p - 在光标后粘贴线
"*P - 在光标前粘贴线
允许您在单独的VIM窗口之间或VIM和PC应用程序(记事本,单词等)之间进行粘贴.
Apa*_*ala 39
使用d喜欢的变化dd来剪切.
要将一系列行写入另一个文件,您可以使用:
:<n>,<m> w filename
Run Code Online (Sandbox Code Playgroud)
其中<n>和<m>是指定一个范围内的行号(或符号).
要使用桌面剪贴板,请查看+g命令.
Win*_*Man 25
您可以打开其他文件并键入:r file_to_be_copied_from.或者你可以缓冲.或者转到第一个文件,转到要复制的行,键入"qY,转到要粘贴的文件并键入"qP.
"buffer_name,复制到缓冲区.Y是猛的,P放了.希望有所帮助!
nos*_*nos 25
这是一种方法;
您也可以同时查看这两个文件,用例如CTRL+ 分割屏幕w s
至于切割,d切割,并将切割的东西放在缓冲区中.dd将"削减"一条线.
小智 16
这些都是很好的建议,但如果你知道另一个文件中文本的位置,请轻松使用sed.:r! sed -n '1,10 p' < input_file.txt这将在光标当前位置的已打开文件中插入10行.
小智 7
编辑文件时,在您希望开始和结束的位置使用标记
ma- 设置a标记
mb- 设置b标记
然后,要将其复制到另一个文件中,只需使用以下w命令:
:'a,'bw /name/of/output/file.txt
Run Code Online (Sandbox Code Playgroud)
201705更新:
我刚刚发现,如果您将以下行添加到vimrc文件中,
设置剪贴板=未命名
然后VIM正在使用系统剪贴板
我只是发现在我在不同的VIM实例窗口之间复制内容的方式上,笨拙的方式行不通。(至少,根据我的VIM知识,它不起作用。我不知道是否还有其他方法可以使它起作用)。
根据我的测试,猛拉方式仅适用于在同一窗口中打开多个文件的方式。
如果您想这样做,则最好使用操作系统的cut-copy-past方式,例如ctrl + x,ctrl + c(在Windows下)。
目标:将一个文件的一部分保存到另一个文件中。
解决方案:
将选定的文本保存到新文件中。键入:wSpace新文件的名称和名称。其实你会看到
:'<,'>w new.txt
然后按 Enter
在同一个 Vim 实例中打开的两个缓冲区(== 文件)之间复制文本没有问题:
只需使用 猛拉一个缓冲区y(假设您之前在可视模式下标记了一个要复制的区域),然后使用p. 只要它们在同一个 Vim 实例中,它也适用于不同的选项卡。
如何在同一个 Vim 实例中打开两个文件取决于你的系统:
vim file1 file2--remote-silent选项以确保所有文件都在同一实例中打开如果你在两个不同的 Vim 实例中打开了这两个文件,那么你必须使用系统剪贴板:在第一个 Vim 实例中,使用"+y(再次,在可视模式之前标记要在可视模式下被猛拉的区域) ),然后进入第二个Vim和粘贴剪贴板有:"+p。
这些重映射对我来说就像一个魅力:
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
Run Code Online (Sandbox Code Playgroud)
因此,当我处于可视模式时,我选择了我想要的行并按Ctrl + c然后按Ctrl + v将文本插入接收器文件中.您也可以使用"*y,但我认为有时候很难记住.
这对于将文本从vim复制到剪贴板也很有用.
资料来源:http://vim.wikia.com/wiki/Copy_and_paste_between_sessions_using_a_temporary_file