将所有行复制到剪贴板

时间:2009-10-25 04:33:46

标签: vim editor vi

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

有可能吗?

26 个答案:

答案 0 :(得分:611)

使用:

ý +

猛拉所有线路。

说明:

  • %引用下一个命令来处理所有行
  • y来拉那些线
  • +要复制到系统剪贴板

NB :在Windows中,+*相当于see this answer

答案 1 :(得分:561)

您应该将文字抽到*+ registers

* ý

说明:

  • gg将光标移动到文件的第一个字符
  • "*y从第一行开始向注册*发送一个yank命令,直到......
  • G转到文件末尾

答案 2 :(得分:70)

在Mac上

  • 复制所选部分:直观地选择文字(vV 模式)并输入:w !pbcopy

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

  • 从剪贴板:r !pbpaste

  • 过去

答案 3 :(得分:48)

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

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

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

答案 4 :(得分:36)

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

答案 5 :(得分:25)

这就是我整理文件的方法:

ggVGy

答案 6 :(得分:10)

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

有一个名为xclip的程序,它在Ubuntu 11上就像putclip一样工作:

:%!xclip -sel clip
u

默认情况下未安装。安装,使用:

sudo apt-get install xclip

答案 7 :(得分:9)

在Ubuntu 12上

您可能会尝试安装 vim-gnome 包:

sudo apt-get install vim-gnome

我试过了,因为vim --version告诉我它会禁用 xterm_clipboard 标志(由 - 表示),这是使用它所需要的剪贴板功能。

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

在Arch Linux上

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

答案 8 :(得分:5)

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

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

至少在Ubuntu终端(Gnome)下,标准副本也有效( CTRL SHIFT C ,虽然似乎没有是select all的标准键盘快捷键(除 ALT E 后跟 A )。

答案 9 :(得分:5)

你可以按gg将光标定位到文件的开头,然后按yG将所有内容从头到尾复制(找到G)到buffer.good运气好!

答案 10 :(得分:5)

我尝试了一些人们上面提到过的命令。没有用。 然后我抓住了最简单的一切。

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

答案 11 :(得分:4)

你可以使用&#34; cat&#34;命令打开文件并使用鼠标复制

答案 12 :(得分:3)

gVim的:

:set go=a

V

请参阅: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.

答案 13 :(得分:3)

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

答案 14 :(得分:2)

将整个文件复制到vim或其标签

y G 

然后转到标签并按

粘贴
p

并切断整个文件的使用

d G

答案 15 :(得分:2)

如果您的手指默认为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>

答案 16 :(得分:2)

嗯,所有这些方法都很有趣,但是作为懒惰的程序员,我使用数字+ y

的组合来猛拉所有行

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

  1. gg将光标放在第一行
  2. 插入78 + y - &gt;它在你的光标和当前行下方有78行

答案 17 :(得分:2)

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

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

对于Cygwin的vim我使用

:%!putclip
u

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

答案 18 :(得分:1)

您可以使用shortcur,例如:

noremap <F6> :%y+<CR>

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

答案 19 :(得分:1)

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

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

答案 20 :(得分:1)

这是一个map命令,使用 CTRL + a 选择全部到剪贴板:

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

将其添加到 .vimrc ,您就可以了...

答案 21 :(得分:0)

我知道应该定下来十年,但是前两个答案对我没有用,所以我一直在研究。在Redhat(远程服务器)-Windows 10(本地计算机)上,如果无法用鼠标选择整个对象,则会陷入困境,因为通常的副本在远程和本地计算机剪贴板之间不起作用。

因此,要在远程Linux上复制并粘贴在本地Windows上,请使用 * 指定主缓冲区,然后进行两次修饰

使用 g g * y y

答案 22 :(得分:0)

我在.vimrc中添加了以下行

nnoremap <F5> :%y+<CR>

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

答案 23 :(得分:-1)

我创建了一个执行此操作的功能,将其放在~/.vimrc

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

OBS:如果您使用neovim,还需要一些剪贴板管理器,如xclip。有关更多信息,请输入neovim :h checkhealth

同样重要的是,并不总是简单的y会复制到剪贴板,以便制作每个副本Feed +&#34;剪贴板注册&#34;尝试设置::set clipboard=unnamed,unnamedplus。有关mor信息,请参阅::h unnamed

Here有关vim wikia的更多信息。

答案 24 :(得分:-1)

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

  1. 更改PuTTY会话的设置,转到记录并将其更改为&#34;可打印的字符&#34;。设置日志文件
  2. 做一个相应文件的猫
  3. 转到您在步骤1中设置的文件,您将在日志文件中包含您的内容。
  4. 注意:它会将该会话的所有打印字符复制到日志文件中,因此最终会变大。在这种情况下,请删除日志文件并捕获目标文件,以便在计算机上复制该特定文件的内容。

答案 25 :(得分:-2)

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