将所有行复制到剪贴板

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

那么有可能吗?

1156173 次浏览

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

因此,gg"+yG将复制整个文件。

类似地,要从剪贴板粘贴,+p

您应该将文本拉到*+登记册

#E YZ 0#E YZ 0#E YZ 2#E YZ 3#E YZ 4#E YZ 5

说明:

  • gg将光标指向文件的第一个字符
  • "*y从第一行开始对寄存器*执行yank命令,直到…
  • G去文件的末尾

用途:

:%y+

拉起所有的线。

说明:

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

NB:在Windows中,+*等价于看到这个答案

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

  • CTRL一个表示“标记整个文件。
  • CTRLC表示“复制所选内容。
  • ESC表示“取消选择,因此您的下一次按键不会替换整个文件:-)

至少在Ubuntu终端(Gnome)下,标准副本也可以工作(CTRLSHIFTC,尽管似乎没有select all的标准键盘快捷键(除了ALTE后跟一个)。

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

gVim的自动复制任何突出显示到剪贴板功能是最简单的或使用外部程序通过:!

我用Cygwin的病毒

:%!putclip
u

也许Ubuntu有一个CLI应用程序,就像PutClip??

这就是我所做的来拉取整个文件:

ggVGy

gVim:

:set go=a

ggVg

: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.

(回复@rshdev,并避免在OP评论中使用+xterm_clipboardper@nelstrom重新编译vim)

在Ubuntu 11上有一个名为xClip的程序,它的工作方式类似于putClip:

:%!xclip -sel clip
u

它不是默认安装的。要安装,请使用:

sudo apt-get install xclip

:%y a将所有内容猛拉到vim的缓冲区中, 在命令模式下按下p将在光标当前所在的行之后粘贴被拉动的内容。

在ubuntu 12

您可以尝试安装vim-gnome包:

sudo apt-get install vim-gnome

我尝试了一下,因为vim --version告诉我它将禁用标志xterm_clipboard(由-指示),这是使用剪贴板功能所必需的。

->在Ubuntu 12上安装vim-gnome包还安装了基于控制台的vim版本,启用了此选项(由xterm_clipboard标志前的+指示)

拱门Linux

您可以出于同样的原因安装vim-clipboard

如果您运行neovim,那么您应该安装xclip(由help clipboard-tool解释)

在mac

  • 复制选定部分:直观地选择文本(正常情况下键入vV) mode)和类型:w !pbcopy

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

  • 从剪贴板过去:r !pbpaste

这是一个使用CTRL+一个选择所有剪贴板的map命令:

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

将其添加到您的. vimrc,您就可以开始了…

您可以按gg将您的curser定位到文件的开头,然后按yG将所有内容从开始到结束(G位于)复制到buffer.good运气!

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

好吧,所有这些方法都很有趣,但是作为懒惰的程序员,我通过使用数字+y的组合来使用yank all line

例如,您有总共78行的源代码文件,您可以执行以下操作:

  1. gg在第一行获取光标
  2. 插入78+y-->它在光标和当前行下方猛拉78行

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

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y


" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

我将它们映射到<Leader><C-a><Leader><C-c>

我尝试了上面提到的一些命令。没有工作。 然后我得到了他们中最简单的。

第一步:vi <filename>
第2步:右键单击Putty窗口的标题栏
第3步:选择“清除回滚”(以避免复制SSH会话的其余部分)
第4步:再次右键单击并选择“全部复制到剪贴板”。

如果您在使用VI时遇到问题,另一种复制整个文件的简单方法是输入“cat filename”。它会将文件回传到屏幕上,然后您只需上下滚动并复制/粘贴。

我无法使用上面的答案复制文件,但我有油灰,我在Quora上找到了一个解决方法。

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

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

将整个文件复制到vim或其选项卡中

y G

然后移动到选项卡并粘贴

p

并剪切整个文件使用

d G

我创建了一个函数来执行此操作,将其放在您的~/.vimrc上。

fun! CopyBufferToClipboard()
%y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS:如果您使用的是neovim,您还需要一些剪贴板管理器,如xclip。

同样重要的是要提到,并不总是简单的y将复制到剪贴板,为了使每个复制提要+是“剪贴板寄存器”尝试设置::set clipboard=unnamed,unnamedplus。更多信息请参见::h unnamed

这里关于vim wikia的更多信息。

您可以使用“cat”命令打开文件并使用鼠标复制

我知道十年应该解决,但前两个答案对我不起作用,所以我继续挖掘。在Redhat(远程服务器)-Windows 10(本地机器)上,如果你不能用鼠标选择整个东西,你会被卡住,因为通常的副本在远程和本地机器剪贴板之间不起作用。

因此,要在远程Linux上复制并粘贴到本地Windows上,请使用*指定主缓冲区并进行漂亮的双Yank

使用gg * yy

我已将以下行添加到我的. vimrc

nnoremap <F5> :%y+<CR>

这允许我通过按F5(在命令模式下)将Vim中的所有文本复制到剪贴板。

你可以用一个短的,像这样:

noremap <F6> :%y+<CR>

这意味着,当您以正常模式推送F6时,它将复制整个文件,并将其添加到剪贴板。 或者你可以在正常模式下输入:%y+,然后按Enter

虽然上述许多答案都很好,但这些解决方案都不适合我,因为我使用的是Ubuntu 16.04附带的默认VIM安装,并且默认情况下没有安装剪贴板选项。我还想将文本粘贴到外部程序中。

有效的解决方案:Ubuntu的默认终端允许您通过按Edit然后按Select All来突出显示整个内容。

我在PowerShell中使用Vim,当我需要将短代码块复制到Windows剪贴板时;

我使用:set nonumber删除行号,然后用光标右键单击可视地选择代码。然后我用ctrl+v将它粘贴到我想要的任何地方。