如何在Vi / Vim中选择所有文本?


193

使用VI工具编辑配置文件。

如何选择文件中的所有文本(约1000行),将其复制,然后粘贴到Google文档中?

Answers:


158

最简单,最快的方法是使用:: % y +然后转到Google文档(或任何地方)并粘贴。说明:

  • % 引用下一条命令在所有行上工作
  • y  拉那些线
  • +  复制到系统剪贴板

另一种方法是,g g " + y G但您可能会承认上述操作更快,更容易。


10
@Tuxmentat您能解释一下每个键的作用吗:%y+
Jas

10
如果它解释了每个键对两个序列的作用,则此答案会更好。
AsksAnyway,2014年

6
我最好的猜测:“:”表示我们正在使用“ ex mode”命令(我认为)。无论如何,这是一个命令。'%'是特殊的命令行范围说明符,用于指定整个文件。'y'表示所有内容,'+'指定剪贴板的寄存器。:help <command>帮助我解决了这个问题。
Hawkeye Parker

11
我一定做错了什么。我输入:%y+,然后得到E488: Trailing characters
约翰尼,为什么

24
我得到“ E850:无效的寄存器名称”。第二种方法可以很好地进行复制,但是无法在Ubuntu 16.04上进入系统剪贴板(至少对我来说-我有一个.vimrc可能会影响事物)。
EntangledLoops

94

许多给出的答复也取消了选择,而这并不是我想要的。

我正在ggVG为此目的使用(需要在正常模式下运行)。此命令选择文档内的整个文本。

我什至Ctrl+A为此重新映射,因为我真的不需要使用快捷方式(默认Ctrl+A映射)来增加整数。

只需将其添加到您的.vimrc

map <C-a> <esc>ggVG<CR>

它有<esc>第一,以确保用户在正常模式。


2
正是我要找的东西,很高兴看到Ctrl + A在默认情况下不在vim中。希望没有副作用。
Nikos Alexandris

2
我个人使用ggVG,但gg0vG$可能更合适,因为它可以更接近地复制“正常” Ctrl + A操作。
Sheharyar's

39

cat file如果需要将输出粘贴到浏览器中,则可以使用然后选择输出并复制并粘贴。

对于vi,这是您可以选择所有文本并将其写入新文件的方式:

shift v  -- visual mode
shift g -- jump to eof
"*y -- yank select text
:e my_new_file -- create a new file
"*p -- paste into a new file

从理论上讲,它应该在Linux和Windows上都可以工作-我在Mac上尝试过,但是没有用。


1
粘贴到Web浏览器中cat file是必经之路。该shift v方法仅复制到Vi的内部缓冲区。
Aleksandr Levchuk,2010年

如果您使用的系统剪贴板使用*注册表,则不会-但这仅在X上有效并且我在Windows上听说过-因此,如果您使用ssh,则需要-X-检查vim是否已将其支持到vim中-:set剪贴板+ =未命名

有没有其他方法可以执行此操作而不创建新文件。如果我们正在服务器上实时编辑,则需要将备份代码保留在本地计算机上,以便我们可以还原。
NJInamdar

+1为猫,然后选择腻子。当然,它不适用于大文件,并且不是最用户友好的方法。但是对于复制超出屏幕视口的小脚本文件已经足够了。
Arnis Juraga '17

15

使用ggVG。键入“ gg”进入测试顶部,然后键入VG。



7

我在CentOS-7环境中使用Vim 7.4。选择所有文本的工作原理是

:%y

然后就p在我想要完整副本的下一个文件中。

要么

您可以使用cat命令。

cat copyfile > pastefile

这个git repo还有其他一些有用的命令。


3

对于Mac,请使用pbcopy(粘贴板副本):

cat file.txt | pbcopy

现在,file.txt的内容位于剪贴板上,可粘贴到另一个应用程序(例如浏览器)中。

您还可以使用pbpaste将剪贴板的内容粘贴到文件中:

pbpaste > file.txt

尽管这并不专门涉及vi,但在Mac上确实实现了相同的目标。


1

如果您使用的是Linux桌面,则可以使用xclip或xsel将其加载到剪贴板中。对于这种大小的东西,您可能只想使用google docs中的上载功能。


1

另一种方法是:

您按v键盘上的键,然后将VIM切换为VISUAL

然后向下滚动选择所有文本

^+ INSERT复制

SHIFT+ INSERT可以将文本粘贴到Google文档上的任意位置。




0

使用以下命令。

cat <your file name>

它将回显文件的内容。现在选择,滚动,复制,粘贴。
游戏结束

例:

cat bobis.txt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.