如何使用vim命令行从vim编辑器复制所有文本?

时间:2015-06-15 06:16:38

标签: linux vim

我想从vim编辑器中选择所有文本,我尝试了:%y+命令,但收到错误E850: Invalid register name。我从this link得到了这个命令。请帮我如何复制vim中打开的文件中的所有文本。他们正在使用猛拉,这是什么意思..

6 个答案:

答案 0 :(得分:15)

我有类似的问题。不知道你为什么得到这么多的选票。 问题是您尚未安装let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let managedContext = appDelegate.managedObjectContext let fetchRequest = NSFetchRequest(entityName: "Session") fetchRequest.returnsObjectsAsFaults = false do { var session = try managedContext.executeFetchRequest(fetchRequest) as! [Session] managedContext.deleteObject(session.first!) if session.first!.deleted { print("Succesfully deleted") print(session.count) } else { print("Unsuccesfull") } } catch { print("Detele error : \(error)") } ,大约需要24 MB,并为内置的vim添加了一项功能。

vim-gnome

那么你的命令就可以了。 sudo apt-get install vim-gnome 此命令将复制系统剪贴板中的所有文本。

答案 1 :(得分:6)

TLDR:如果要将Vim中的文本复制到系统剪贴板类型 g g V G < / kbd> * y 。以下说明......

Vim在终端中运行,根据您使用它的方式以及您正在运行的Vim类型,它并不是真的为您设计用鼠标选择文本并以传统方式复制和粘贴。

如果要使用Vim选择所有文本,请使用 g g V G y (注意中间的大写 V G )。此命令将光标移动到文件的顶部,进入可视模式,移动到文件的底部(因此,选择所有文本),然后猛拉(复制)它。然后,您可以使用 p 来放置(粘贴)此代码,但仅限于Vim

如果要复制到剪贴板以便在Vim以外的某个地方使用,请尝试以下操作:

首先,使用上面列出的命令选择所有内容但没有最终的 y :( g g < KBD> V )。然后按 * y 。这个应该现在将它复制到操作系统的剪贴板中,你可以粘贴( Ctrl / Cmd + v )你想在Vim之外的任何地方。这可能会有所不同,具体取决于你对Vim的设置,但它应该有效。

所用命令的简要说明。 g g 转到文件的顶部。 V 按行进入视觉模式。 G 转到文件末尾。 y 将文本拉出(复制)但到剪贴板。 p 放置(粘贴)文本。

更高级(即很酷)的东西:

允许您访问寄存器。例如 a 提供对寄存器a的访问。

*是系统剪贴板,因此"*提供对系统键盘的访问权限。因此,"*y会进入系统剪贴板。

答案 2 :(得分:2)

虽然对于如何在vim中exploit the system clipboard有一个很好的解释,但听起来你只是让你的vim首先访问剪贴板。尝试安装vim-gnome,它会为您提供进入系统剪贴板所需的软件包。

出于某种原因,“*对我来说不起作用,但与”+ register“完全相同的命令。

答案 3 :(得分:1)

要选择整个文件,您可以跳转到开头,启动可视模式,跳转到结尾:

  

ggVG

答案 4 :(得分:0)

这个问题现在已经有几年了,但我在Linux Mint 18上遇到了同样的问题。我发现使用xclip为我工作了。您可以在.vimrc中映射命令vmap <F7> :!xclip -sel c<CR><CR>,以便将当前选择的可视模式复制到系统剪贴板中。

Here是一个包含上述(和其他)解决方案的线程。

答案 5 :(得分:0)

您可以使用

Vggy / vggy或

VGy / VGy

要直观地选择任意数量的文本然后进行复制,如果要在文件中显示所有文本,则为gg / G,

gg将在光标位于文件底部时进行复制,gg会返回顶部

G将在光标位于文件顶部时进行复制

或者甚至您可以随时使用

Vk(以时间为单位)y,以复制选定的文本行。