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

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

#1 楼

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



%引用下一条命令在所有行上工作

y将这些行拉出

+复制到系统剪贴板

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

评论


@Tuxmentat您能否解释一下每个键在:%y +中的作用

–Jas
2014年6月22日9:41



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

–提问
2014年7月27日在14:13

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

–霍基·帕克(Hawkeye Parker)
2014年8月27日9:53



我一定做错了什么。我键入:%y +,我得到E488:尾随字符

–约翰尼为什么
16年7月27日在20:51



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

–纠缠循环
16年8月4日在20:50



#2 楼

许多给出的答复也取消了我没有寻找的选择。

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

我什至为此重新映射了Ctrl + A,因为我真的不需要使用快捷方式来增加整数(默认Ctrl + A地图)。只需将其添加到您的.vimrc中:

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


它首先具有<esc>,以确保用户处于正常模式。

评论


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

– Nikos Alexandris
2015年4月21日在13:54

我个人使用ggVG,但是gg0vG $可能更合适,因为它可以更紧密地复制“正常” Ctrl + A操作。

– Sheharyar
16-09-22在12:02

#3 楼

您可以使用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上尝试过,但不起作用。

评论


粘贴到Web浏览器中的cat文件是一种方法。 shift v方法仅复制到Vi的内部缓冲区。

–亚历山大·列夫丘克(Aleksandr Levchuk)
2010-12-30 17:31

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

– silviud
2010-12-30 17:34

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

– NJInamdar
13年7月24日在4:51

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

– Arnis Juraga
17-10-14在16:36

#4 楼

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

#5 楼

我在CentOS-7环境中使用Vim 7.4。选择所有文本的最有效方法是

:%y


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



您可以使用cat命令。

cat copyfile > pastefile

此git repo也具有其他一些有用的命令。

评论


这是比其他任何代码都更好的快捷方式。我已经对此进行了测试,它就像一个魅力。

–itsraghz
19/12/23在7:19

#6 楼

gg"+yG



gg"*yG

,具体取决于系统剪贴板是+还是*。 (在许多Unix上,+是用于鼠标中键单击的鼠标选择缓冲区,而*是系统剪贴板)。

评论


我认为这是另一回事:“ *是选择,而“ +是剪贴板”。 vimdoc.sourceforge.net/htmldoc/gui_x11.html#x11-selection

– Mikel
2010-12-30在20:24

你是对的。我也知道,但是打错了字。 ☹

–frabjous
2010-12-30 22:21

#7 楼

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

cat file.txt | pbcopy


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

还可以使用pbpaste将剪贴板的内容粘贴到文件中:在Mac上是相同的目标。

#8 楼

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

#9 楼

另一种方法是:

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

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

^ +插入以复制

Shift +插入以将文本粘贴到Google Docs上的任意位置。

#10 楼

无需使用vi,您可以使用其API和cURL将文本上传到google文档。

评论


这与OP想要的相反-.-

–拉普利·安德拉斯(RápliAndrás)
2014年10月9日18:27

#11 楼

有关如何执行此操作的选项,请参见http://vim.wikia.com/wiki/Accessing_the_system_clipboard。 (如果在“ *中编译,应参考系统剪贴板”。那里也有关于如何将xsel与vim一起使用的说明。

评论


“ *是选择的内容,” +是复制的内容。 vimdoc.sourceforge.net/htmldoc/gui_x11.html#x11-selection

– Mikel
2010-12-30 20:25

#12 楼

使用以下命令。

cat <your file name>


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

例如:

cat bobis.txt