Vim 将所有行复制到剪贴板

Vim 将所有行复制到剪贴板,vim,editor,keyboard-shortcuts,vi,Vim,Editor,Keyboard Shortcuts,Vi,在VI编辑器中,是否有任何方法可以将所有行从打开的文件复制到剪贴板。我尝试了yG,但它没有使用剪贴板来存储这些行 有可能吗?剪贴板是缓冲区+。要复制到剪贴板,请执行“+y”和[移动] 因此,gg“+yG将复制整个文件 同样,要从剪贴板粘贴,“+p您应该将文本拖动到*或+: gg“*yG 说明: gg将光标移到文件的第一个字符 “*y从第一行开始向寄存器发出一个yank命令,*,直到 G转到文件末尾 使用: :%y+ 拔掉所有的线 说明: %引用下一个命令来处理所有行 y来拉扯那些线 +复制到

在VI编辑器中,是否有任何方法可以将所有行从打开的文件复制到剪贴板。我尝试了yG,但它没有使用剪贴板来存储这些行

有可能吗?

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

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


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

您应该将文本拖动到
*
+

gg“*yG

说明:

  • gg
    将光标移到文件的第一个字符
  • “*y
    从第一行开始向寄存器发出一个yank命令,
    *
    ,直到
  • G
    转到文件末尾
使用:

:%y+

拔掉所有的线

说明:

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

NB:在Windows中,
+
*
是等效的。

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

  • CTRLA的意思是“标记整个文件”
  • CTRLC的意思是“复制选择”
  • ESC的意思是“取消选择,以便下次按键不会替换整个文件:-”)
至少在Ubuntu终端(Gnome)下,标准副本也可以使用(CTRLSHIFTC,尽管似乎没有一个标准的键盘快捷键用于
全选
(除了后跟a的ALTE)。

在Bill Joy的vi中没有“剪贴板”的概念,所以我认为没有内置的方法来实现它

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

对于Cygwin的vim,我使用

:%!putclip
u

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

这就是我拉整个文件的方法:

ggVGy
gVim: 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评论中按照@nelstrom使用+xterm_剪贴板重新编译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_剪贴板(由-指示),这是使用剪贴板功能所必需的

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

在Arch Linux上

出于同样的原因,您可以安装vim剪贴板

如果运行neovim,则应在Mac上安装
xclip
(如
帮助剪贴板工具所述)

  • 复制所选部分:目视选择文本(在正常模式下键入
    v
    v
    ) 模式)和类型
    :w!pbcopy

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

  • 剪贴板中的过去
    :r!pbpaste


这里有一个映射命令,可以使用CTRL+a将所有内容选择到剪贴板:

”
“使用control-a选择全部
"
nnoremap ggmqvG“+y'q

将它添加到你的.vimrc中,你就可以开始了…

你可以按gg将光标定位到文件的开头,然后按yG将所有内容从头到尾复制(G定位)要缓冲。祝你好运!

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

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

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

  • gg
    在第一行获取光标
  • 插入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
    
    “CTRL-C和CTRL-Insert是复制的
    vnoremap“+y
    “CTRL-A是全选
    noremap gggHG
    inoremap gggHG
    cnoremap gggHG
    onoremap gggHG
    snoremap gggHG
    xnoremap ggVG
    

    我将它们映射到

    我尝试了上面提到的一些命令,但没有一个有效。 然后我找到了最简单的

    第1步:
    vi

    步骤2:右键单击Putty窗口的标题栏
    步骤3:选择“Clear scrollback”(以避免复制SSH会话的其余部分)

    第4步:再次右键单击并选择“将所有文件复制到剪贴板”。

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

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

  • 更改PuTTY会话的设置,转到日志并将其更改为“可打印字符”。设置日志文件
  • 对相应的文件进行分类
  • 转到步骤#1中设置的文件,您的内容将显示在日志文件中

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

    一定要将整个文件复制到vim或其选项卡中
    "
    " select all with control-a
    "
    nnoremap <C-a> ggmqvG"+y'q
    
    " 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
    
    y G 
    
    p
    
    d G
    
    fun! CopyBufferToClipboard()
        %y+
    endfun
    nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
    command! -nargs=0 CopyFile :call CopyBufferToClipboard()
    
    nnoremap <F5> :%y+<CR>
    
    noremap <F6> :%y+<CR>