Vim“yank”似乎不起作用

问题描述 投票:0回答:6

我对 Vim 还很陌生。今晚,我学习了“yank”命令,但是当我尝试在 MacVim 中使用它时,它没有执行任何操作。

Y
y{motion}
都没有做任何事情。我尝试使用默认的
.vimrc
来排除任何奇怪的配置问题。

Google-fu 让我失望了。这感觉像是一个菜鸟问题。我错过了一些明显的东西吗?

vim yank
6个回答
61
投票

如果您的

set clipboard=unnamedplus
中有设置
.vimrc
那么这将不起作用。

对于 OSX,您必须使用

set clipboard=unnamed

对于 Linux,您可能需要使用

set clipboard=unnamedplus

这是我个人的片段

.vimrc

if system('uname -s') == "Darwin\n"
  set clipboard=unnamed "OSX
else
  set clipboard=unnamedplus "Linux
endif

28
投票

y
ank 本身只是将行复制到剪贴板中 - 您需要将其
p
粘贴到下一行或
P
后退行上才能使用复制的行。要剪切该线,请使用
d
elete。


5
投票

它不做任何事情可见 - 就像其他编辑器中的 Ctrl-C(编辑/复制)一样。尝试在其后面输入命令

p
(粘贴) - 相当于 Ctrl-V - 将拖入的内容放入文档中。


4
投票

yank 命令将文本拉入剪贴板。 例如

yy
只是将当前行拉入公共剪贴板。 您可以使用
p
“粘贴”剪贴板的内容。 您还可以使用类似 "ayw 的工具将文本从当前位置到单词末尾拉入名为
a
的缓冲区中。 对应的看跌期权是
"ap
    


1
投票

设置剪贴板=unnamedplus

我的 .vimrc 按预期工作。


0
投票
.vimrc

文件中以实现有效的剪贴板共享:

# ~/.vimrc
if has('mac')
  set clipboard=unnamed
elseif has('unix')
  set clipboard=unnamedplus
endif

应用这些设置并启动 Vim 后,您可以通过在 Vim 中运行以下命令来验证当前的剪贴板配置:

:set clipboard?

对于 macOS 用户,鉴于 vim 配置中的条件结构,该命令应返回 
clipboard=unnamed

此配置使用 Vim 内置的 

has()

功能来检测操作系统。对于 macOS 设置为 unnamed,对于 Unix/Linux 系统设置为 unnamedplus,对于其他系统则默认设置为 unnamed。

has()
功能无需执行外部命令即可快速准确地检测操作系统,在性能和可移植性方面优于使用
system()
功能。
需要注意的是,在 macOS Vim 上将剪贴板设置为 

unnamedplus

可能会导致基本的复制/粘贴命令(如

yy
p
)出现故障。这是因为 macOS 不支持 + 寄存器。因此,
在 macOS 上使用 
unnamed 至关重要。

通过此设置,Vim 的寄存器将链接到系统剪贴板。这意味着Vim中的复制和删除操作会自动反映到系统剪贴板中,您可以直接在Vim中粘贴系统剪贴板内容。这极大地简化了 Vim 和其他应用程序之间的文本交换。

© www.soinside.com 2019 - 2024. All rights reserved.