将所有行复制到剪贴板

有没有办法在VI编辑器中将所有行从打开的文件复制到剪贴板。 我尝试了G,但它没有使用剪贴板来存储这些行。

那可能吗?

您应该将文本放到*+ 寄存器中 :

g g * y G

说明:

  • gg
    • 获取光标到文件的第一个字符
  • "*y
    • 从第一行开始向寄存器*发出一个命令,直到…
  • G
    • 去文件的结尾

使用:

y +

把所有的线都拉下来

说明:

  • %来引用下一个命令来处理所有行
  • y可以抽出这些线
  • +复制到系统剪贴板

注意 :在Windows中, +*是等效的, 请参阅此答案。

在Mac上

  • 复制选中的部分:直观地select文本(在正常模式下inputvV )并键入:w !pbcopy

  • 复制整个文件:%w !pbcopy

  • 过去从剪贴板:r !pbpaste

剪贴板是缓冲区+ 。 要复制到剪贴板,请执行 + y和[移动]。

所以, g g + y G会复制整个文件。

同样,要从剪贴板粘贴, + p

这就是我所做的,以抽取整个文件:

 ggVGy 

如果您在使用VI时遇到问题,另一个简单的方法是复制整个文件,只需input“cat filename”即可。 它会回显文件到屏幕,然后你可以上下滚动和复制/粘贴。

(回复@rshdev,避免在OP的注释中使用@nelstrom + + xterm_clipboard重新编译vim)

有一个叫做xclip的程序,就像Ubuntu 11上的putclip:

 :%!xclip -sel clip u 

它没有默认安装。 要安装,使用:

 sudo apt-get install xclip 

Ubuntu 12上,你可以尝试安装vim-gnome软件包

 sudo apt-get install vim-gnome 

我试过了,因为

 vim --version 

告诉我它将禁用标志xterm_clipboard (用表示),这是使用剪贴板function所必需的。

– >在Ubuntu 12上安装vim-gnome软件包也安装了一个基于vim的控制台版本,启用了这个选项(在xterm_clipboard标志之前用+表示)

你可以按gg来定位你的光标到文件的开头,然后按yG把所有的内容从开始到结束(G位于)缓冲。好运!

如果你在视觉模式下使用Vim,标准的剪切和粘贴键也适用,至less在Windows中是这样。

  • CTRL A表示“标记整个文件。
  • CTRL C表示“复制select。
  • ESC的意思是“取消select,所以你的下一个按键不会取代整个文件:-)

至less在Ubuntuterminal(Gnome)下,标准拷贝也可以工作( CTRL SHIFT C ,尽pipe似乎没有一个标准的键盘快捷键来select all (除了ALT E之后的A )。

我尝试了一些人们上面提到的命令。 没有工作。 然后我掌握了其中最简单的一切。

第1步: vi <filename>
步骤2:右键单击“腻子”窗口的标题栏
第3步:select“清除回滚”(避免复制SSH会话的其余部分)
第四步:再次右键单击,select“全部复制到剪贴板”。

:%ya所有的内容都放到vim的缓冲区中,在命令模式下按下p将会粘贴被当前光标所在行后面的被抽出的内容。

gVim的:

 :set go=a 

g g V G

请参阅:help go-a

 'a' Autoselect: If present, then whenever VISUAL mode is started, or the Visual area extended, Vim tries to become the owner of the windowing system's global selection. This means that the Visually highlighted text is available for pasting into other applications as well as into Vim itself. When the Visual mode ends, possibly due to an operation on the text, or when an application wants to paste the selection, the highlighted text is automatically yanked into the "* selection register. Thus the selection is still available for pasting into other applications after the VISUAL mode has ended. If not present, then Vim won't become the owner of the windowing system's global selection unless explicitly told to by a yank or delete operation for the "* register. The same applies to the modeless selection. 

Bill Joy的vi中没有“剪贴板”的概念,所以我不认为有一个内置的方法来做到这一点。

gVim的自动复制任何东西高亮的剪贴板function是最简单的或通过使用外部程序:!

对于Cygwin的vim我使用

 :%!putclip u 

也许Ubuntu有像putclip一样的CLI应用程序?

那么,所有这些方法都是有趣的,但作为懒惰的程序员,我使用数字+ y组合来抽出所有行

例如你有78行的源代码文件,你可以做如下:

  1. gg将光标放在第一行
  2. 插入78 + y – >它将游标和当前行下面的78行向上游移动

如果您的手指默认为CTRL-A CTRL-C ,则尝试从$VIMRUNTIME/mswin.vim映射。

 " CTRL-C and CTRL-Insert are Copy vnoremap <CC> "+y " CTRL-A is Select all noremap <CA> gggH<CO>G inoremap <CA> <CO>gg<CO>gH<CO>G cnoremap <CA> <CC>gggH<CO>G onoremap <CA> <CC>gggH<CO>G snoremap <CA> <CC>gggH<CO>G xnoremap <CA> <CC>ggVG 

我把它们映射到<Leader><Ca><Leader><Cc>

这是一个使用CTRL + aselect全部到剪贴板的map命令:

 " " select all with control-a " nnoremap <Ca> ggmqvG"+y'q 

将它添加到你的.vimrc ,你很好去…

我不能使用上面的答案复制文件,但我有腻子,我find了Quora的解决方法。

  1. 更改您的PuTTY会话的设置,进入日志logging并将其更改为“可打印的字符”。 设置日志文件
  2. 做一个相应的文件的猫
  3. 转到您在步骤#1中设置的文件,您将在日志文件中包含您的内容。

注意:它将会话的所有打印字符复制到日志文件,所以最终会变大。 在这种情况下,删除日志文件并捕获目标文件,以便在计算机上复制该特定文件的内容。

单击鼠标左键,拖动要复制和释放的部分。 代码自动被复制到剪贴板。