假设当前缓冲区是一个打开编辑的文件,那么:e不会显示E32: No文件名。
我想要扯掉其中一个或全部:
文件名与状态行中显示的完全一致,例如~\myfile.txt 文件的完整路径,例如c:\foo\bar\myfile.txt 只是文件名,例如myfile.txt
假设当前缓冲区是一个打开编辑的文件,那么:e不会显示E32: No文件名。
我想要扯掉其中一个或全部:
文件名与状态行中显示的完全一致,例如~\myfile.txt 文件的完整路径,例如c:\foo\bar\myfile.txt 只是文件名,例如myfile.txt
当前回答
答案在Neovim/ ubuntu上测试过。
:let @+=@%
据我所知,%寄存器已经包含了相对文件路径,因此将%寄存器的内容移动到代表您最喜欢的剪贴板的寄存器就很简单。
这个SO答案涉及从一个寄存器复制到另一个寄存器
对我来说很简单。不需要任何难以记住的expand()东西。
其他回答
几乎就是你想要的,它可能会这样做:在INSERT模式下,Ctrl+R %将当前文件名拉到你所在的位置(命令提示符,编辑缓冲区,…)更多信息请看Vim提示。
如果您希望简单地拉出当前打开的文件名的路径,那么只需按:
step1: ctrl + g[你会在窗口底部看到整个根路径] Step2:用鼠标选择路径 用鼠标中间的滚轮粘贴
我把它放在我的vimc中:
nnoremap yl :let @" = expand("%:p")<cr>
如果你在终端vim上,并且想要复制到系统剪贴板:为了便于记忆,不需要预定义的映射/函数:
:!echo %
打印当前缓冲区的相对路径到终端,在那里你可以复制它,然后输入回vim。(如前所述,您可以在命令后加上:p或:t以获得绝对或basename,如果您能记住....)
如果您执行:reg,您将在%寄存器中看到当前文件的名称。例如,您可以用“%p”粘贴它。
如果你像我一样,经常切换到“备用”缓冲区,那么将它的完整路径和文件名放在#寄存器中是非常方便的。例如,您可以用“#p”粘贴它。
注意(以防这是特定于我的设置的行为):我在Ubuntu 14.04.4 LTS上使用VIM 7.4.52。