我对 Vim 还很陌生。今晚,我学习了“yank”命令,但是当我尝试在 MacVim 中使用它时,它没有执行任何操作。
Y
和 y{motion}
都没有做任何事情。我尝试使用默认的 .vimrc
来排除任何奇怪的配置问题。
Google-fu 让我失望了。这感觉像是一个菜鸟问题。我错过了一些明显的东西吗?
如果您的
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
y
ank 本身只是将行复制到剪贴板中 - 您需要将其p
粘贴到下一行或P
后退行上才能使用复制的行。要剪切该线,请使用 d
elete。
它不做任何事情可见 - 就像其他编辑器中的 Ctrl-C(编辑/复制)一样。尝试在其后面输入命令
p
(粘贴) - 相当于 Ctrl-V - 将拖入的内容放入文档中。
yank 命令将文本拉入剪贴板。 例如
yy
只是将当前行拉入公共剪贴板。 您可以使用 p
“粘贴”剪贴板的内容。 您还可以使用类似 "ayw
的工具将文本从当前位置到单词末尾拉入名为 a
的缓冲区中。 对应的看跌期权是"ap
。设置剪贴板=unnamedplus
我的 .vimrc 按预期工作。
.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 和其他应用程序之间的文本交换。