将当前文件名复制到剪贴板

4
我该如何在OS X上使用Vim将当前缓冲区的文件名发送到剪贴板?
4个回答

11

这有帮助吗?

:let @+=expand('%:p')

如果您需要经常这样做,请创建一个映射。


没错!这比我想出来的更好。如果有人想知道,你可以通过删除“:p”来获取相对路径。 - David Tuite

2
这将完成它。
:!echo -n % | pbcopy
  • % 在Vim中代表当前缓存区的文件名。
  • echo -n % 将打印当前文件名,但不会在结尾处添加换行符。
  • | 会将上述表达式的输出传输到下面的命令。
  • pbcopy 可以将内容添加到Mac OS X系统剪贴板中。

您可以将此映射到一个方便的快捷键,方法是将其放入您的.vimrc文件中。

nnoremap <leader>f :!echo -n % \| pbcopy<cr>

Twitter是另一个选项卡。 - romainl
只有在你的 Vim 没有剪贴板支持的情况下,才需要使用外部工具进行 shell 操作(这种情况不太可能出现)。 - Ingo Karkat

0
我在我的~/.vimrc文件中使用以下内容:
" yank a register into another register
" ["x]yr{reg}
nnoremap <silent> yr :call setreg(v:register, getreg(nr2char(getchar())))<cr>

这使我能够将一个寄存器复制到另一个寄存器。通常我使用它将@%寄存器复制到无名或系统剪贴板中。例如"+yr%。但是我偶尔发现复制@.@:也很有用。


0
在OSX上,要将完整路径复制到剪贴板,您可以使用以下命令: :!echo %:p | pbcopy 然后您可以将其粘贴到任何地方(包括vim)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接