本文共 5701 字,大约阅读时间需要 19 分钟。
是否可以直接从复制到剪贴板? yy
只复制东西给Vim的内部缓冲区。 我想复制到操作系统的剪贴板。 在Vim中有没有这样的命令,或者你只能在Vim中猛拉东西?
在vimrc文件中,您可以指定自动使用系统剪贴板进行复制和粘贴。
在Windows上设置:
set =unnamed
在Linux上设置(vim 7.3.74+):
set clipboard=unnamedplus
注意:您可能需要使用最新版本的Vim才能使用这些版本。
在Mac OSX上
复制所选部分:直观地选择文本(在正常模式下键入v
或V
)并键入:w !pbcopy
复制整个文件:%w !pbcopy
从剪贴板粘贴:r !pbpaste
在大多数 Linux Distros上,您可以替换:
pbcopy
上面xclip -i -sel c
或xsel -i -b
pbpaste
使用xclip -o -sel -c
xsel -o -b
xclip -o -sel -c
或xsel -o -b
- 注意: 如果您的发行版上没有预安装这些工具( xsel
和xclip
),您可以在回购中找到它们 @Jacob Dalton在评论中提到了这一点,但似乎没有人在答案中提到vim必须使用剪贴板支持编译,以便提供此处提到的任何建议。 默认情况下我没有在Mac OS X上配置我的方式,我不得不重建vim。 使用此命令查明是否有vim --version | grep 'clipboard'
vim --version | grep 'clipboard'
。 +clipboard
意味着你很好,这里的建议对你-clipboard
,而-clipboard
意味着你必须重新编译和重建vim。
我在.vimrc中写了一个简单的行来进行复制工作。 希望这有助于某人。 不幸的是,我的vim没有安装剪贴板支持,所以这些建议都不适合我。 基本上,将此行粘贴到.vimrc中:
mapy:e ~/clipsongzboard P:w !pbcopy :bdelete!
如果您想阅读有关此功能的详细信息,可以在上阅读此内容
总结并让新手更容易,
要复制当前行,请在命令模式下键入:
"*yy
要复制整个文件/缓冲区,请在命令模式下首先通过gg
转到开头,然后键入
"*yG
如上所述,这需要+clipboard
vim --version
,这表明剪贴板支持的可用性, -clipboard
意味着没有。
如果您的vim恰好在没有+xterm_clipboard
选项的情况下进行编译,就像默认情况下在Debian中编译而我猜Ubuntu,您可以选择管道选择或整个缓冲区来处理桌面剪贴板的外部程序。 对于xclip
(您可能需要先安装),命令将为:w !xclip -sel clip
我的解决方案是安装包含剪贴板选项的附加vim:
sudo apt-get install vim-gnome
也许有人会发现它很有用。 我想保持独立于X剪贴板,并且仍然能够在两个运行的vims之间复制和粘贴一些文本。 这个小代码将所选文本保存在temp.txt文件中以进行复制。 将下面的代码放入.vimrc中。 使用CTRL-c CTRL-v完成工作。
vnoremap:w!cp / dev / null~ / temp.txt && cat>〜/ temp.txt
noremap:r!cat~ / temp.txt
对于某些国际键盘,您可能需要按“ + 空格键才能获得"
。
所以在这种情况下你必须按“ Space + y或” Space * y
set clipboard=unnamed
放在你的vimrc
。 Visual
模式下选择要复制的内容(按v进入)。 Normal
模式(按退出[esc]),按y复制。 Normal
模式下按p / P. 如果您不想为vim使用任何图形界面,并且您更喜欢坚持使用终端仿真器,那么可能会有一个更简单的方法来解决这个问题。 不要使用yank或类似的东西,首先看一下你使用的终端文档。 我一直在努力解决同样的问题(尝试使用+剪贴板和xclip等),最后我发现在我的终端模拟器中只需按shift并选择你要复制的任何文本就足够了。 而已。 非常简单,不需要搞乱配置。 (我顺便使用urxvt)。
如果您通过putty连接到unix系统,请按照以下步骤复制文件的内容
如果你在MAC OSX中使用vim,不幸的是它配备了较旧版本,并且没有符合剪贴板选项。 幸运的是,自制软件可以轻松解决这个问题。
安装vim:
brew install vim
安装vim的gui:
brew install macvim
重启终端才能生效。
将以下行追加到〜/ .vimrcset clipboard=unnamed
现在你可以用yy
复制vim中的行并在系统范围内粘贴它。
多年来我一直对set clipboard方法感到满意。 最大的缺点是它会弄乱你的剪贴板历史记录,即使你使用x
进行删除也是如此。 这是一个更好,更优雅的解决方案。
将vim的文本[范围]复制到系统剪贴板中。 (提示:首先使用v
或V
选择范围,然后键入冒号:
以激活Ex命令):
:[line-range]yank +
例如, :5,10y *
(复制/猛拉5-10行到系统剪贴板*
寄存器) 将系统剪贴板中的内容粘贴到新行的vim中:
:put +
注意:
brew info vim
将能够看到安装vim的其他选项。 目前它没有任何其他选择。 仅在ubuntu终端下的vim中,
按shift + drag mouse
选择vim中的文本,然后在终端上按ctrl + shift + c
然后在其他编辑器上按ctrl + v
使用寄存器"+
复制到系统剪贴板(即"+y
而不是y
)。
同样,您可以粘贴"+
从系统剪贴板中获取文本(即"+p
而不是p
)。
*
寄存器将执行此操作。 在Windows中, +
和*
是等价的。 在unix中, +
和*
之间存在细微差别:
在Windows下,*和+寄存器是等效的。 但是,对于X11系统,它们有所不同。 对于X11系统,*是选择,+是剪切缓冲区(如剪贴板)。
*
可能是你大多数时候想要的,所以我使用*
因为它在两种环境中都能像我期望的那样运行。
在Linux发行版中,出于某种原因,您必须首先安装vim-gtk才能获得剪贴板功能。
对于那些在yanking或put时如何使用寄存器感到困惑的人,你只需要写"
然后是寄存器的名称。所以为了将某些东西复制到剪贴板寄存器,你输入"*y
然后给你输入"*p
如果您使用的是GVim,还可以set guioptions+=a
。 这将触发自动复制到您在可视模式下突出显示的文本的剪贴板。
在mouse
的帮助下进行selecting
并right-click copy
在我的情况下工作。
我不想要包含行号,所以我:set nonumber
在copying
之前:set nonumber
。
我的Windows笔记本电脑上面没有任何上述功能。
Ctrl + C可以复制..但我需要Shift + Insert来粘贴!
(一个很好的理由总是得到一台笔记本电脑,无需按下辅助键即可访问Insert )
你可以在这里找到答案
对于Linux:首先,您必须通过安装gvim
在vim版本中启用剪贴板。
接下来,您必须将此行放在.vimrc
文件中。
set clipboard=unnamedplus
对于OSX,就像上面提到的10342答案一样,你需要确保vim支持剪贴板功能,说OSX预先附带的那个不支持剪贴板,如果你运行brew install vim
它会工作。
除了运行vi仍然会让你运行preshipped OSX版本,而不是你从brew安装的版本。
为了克服这一点,我简单地将我的vim命令别名为brew版本,而不是OSX默认版本:
alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"
现在我是金色的
我是一个Vim newby但是,要将所有文本复制到系统剪贴板(例如,如果你想将它粘贴到文字处理器或其他文本编辑器,如gedit,mousepad等...),在正常模式下:
ggVGy
或者,更简单地说:
:%Y
按照建议,我还安装了vim-gtk并放了
设置clipboard = unnamedplus
在我的.vimrc中
一切正常
如果只想复制部分文本,请使用可视模式(v) ,选择要复制的文本,然后按y 。
最后,我建议剪贴板程序,如Clipman(我最喜欢的),Clipit,Parcellite或类似的。
(我在Debian Stretch Xfce中使用vim 8.0)
原谅我的英语! :-)
我有问题,因为我的vim不支持剪贴板 :
vim --version | grep clip-clipboard +insert_expand +path_extra +user_commands+emacs_tags -mouseshape +startuptime -xterm_clipboard
我安装了vim-gnome(支持剪贴板),然后再次检查:
vim --version | grep clipboard+clipboard +insert_expand +path_extra +user_commands+emacs_tags +mouseshape +startuptime +xterm_clipboard
现在我可以分别使用“+ y和”+ p进行复制和粘贴。
对于Ubuntu - 2018年7月
使用寄存器“+”复制到系统剪贴板(即“+ y而不是y” )。
同样,您可以粘贴“+”从系统剪贴板中获取文本(即“+ p而不是p” )。
您还必须确保编译vim并支持剪贴板。 尝试:
vim --version | grep .xterm_clipboard -o
如果它是-xterm_clipboard (减去前缀),那么你没有支持。
以下是使用具有剪贴板支持的vim工作版本进行交换的一些说明。
再次使用vim --version | grep .xterm_clipboard -o
检查 vim --version | grep .xterm_clipboard -o
你可以确认剪贴板现在可用(即。 + xterm_clipboard )
祝好运。
如果你有xclip,一种简单的方法将文本复制到剪贴板如下:
y
命令在香草vim) :call system("xclip -selection clipboard", @")
:call system()
运行终端命令。 它需要两个参数,第一个是命令,第二个是管道到该命令的内容。 例如:echom system("head -1", "Hello\\nWorld")
返回Hello(带有一些填充)。 echom返回命令的输出,调用不返回。
xclip -selection clipboard
只是将文本复制到系统剪贴板而不是默认的X剪贴板(中间的moue按钮访问)。
@"
返回最后一个被拉动的文本。”是默认寄存器,但您可以使用任何寄存器。 要查看所有寄存器的内容,请键入:registers
。
如果您处于Linux的图形模式,请按 Shift + Ctrl + C ,但首先需要选择需要复制的内容。
到目前为止,我一直在使用键盘快捷键在MacOsX上苦苦挣扎。 我知道问题不是关于使用键盘短裤。 但这可能会帮助那些有同样担忧的人。
我发现如果你取消选中:
查看 - >允许鼠标报告
从终端菜单,您将能够使用复制到剪贴板
命令 + c
再次。
在我的实例中,通过用鼠标突出显示(单击并拖动)选择文本导致vim进入可视模式。
无论如何,在Mac上,最简单的解决方案是使用fn + mouse click and drag
以避免进入可视模式。
如果您希望默认避免此行为,则可以编辑vimrc
我无法复制到我的剪贴板系统,因为我在〜/ .vimrc文件中有这个:
if has('mouse') set mouse=a endif
但是,如果您接下来添加此行,它将允许您只需按Ctrl + c即可将您选择的任何内容添加到剪贴板中。
vmap"+y
原始讨论和更多细节:
转载地址:http://apdnb.baihongyu.com/