假设当前缓冲区是一个打开编辑的文件,那么:e不会显示E32: No文件名。
我想要扯掉其中一个或全部:
文件名与状态行中显示的完全一致,例如~\myfile.txt 文件的完整路径,例如c:\foo\bar\myfile.txt 只是文件名,例如myfile.txt
假设当前缓冲区是一个打开编辑的文件,那么:e不会显示E32: No文件名。
我想要扯掉其中一个或全部:
文件名与状态行中显示的完全一致,例如~\myfile.txt 文件的完整路径,例如c:\foo\bar\myfile.txt 只是文件名,例如myfile.txt
当前回答
如果你在终端vim上,并且想要复制到系统剪贴板:为了便于记忆,不需要预定义的映射/函数:
:!echo %
打印当前缓冲区的相对路径到终端,在那里你可以复制它,然后输入回vim。(如前所述,您可以在命令后加上:p或:t以获得绝对或basename,如果您能记住....)
其他回答
如果您执行:reg,您将在%寄存器中看到当前文件的名称。例如,您可以用“%p”粘贴它。
如果你像我一样,经常切换到“备用”缓冲区,那么将它的完整路径和文件名放在#寄存器中是非常方便的。例如,您可以用“#p”粘贴它。
注意(以防这是特定于我的设置的行为):我在Ubuntu 14.04.4 LTS上使用VIM 7.4.52。
我把它放在我的vimc中:
nnoremap yl :let @" = expand("%:p")<cr>
答案在Neovim/ ubuntu上测试过。
:let @+=@%
据我所知,%寄存器已经包含了相对文件路径,因此将%寄存器的内容移动到代表您最喜欢的剪贴板的寄存器就很简单。
这个SO答案涉及从一个寄存器复制到另一个寄存器
对我来说很简单。不需要任何难以记住的expand()东西。
我使用xclip来访问X的剪贴板,所以我使用:
nmap <localleader>d :call system("xclip -i -selection clipboard", expand("%:p"))<CR>
如果你在终端vim上,并且想要复制到系统剪贴板:为了便于记忆,不需要预定义的映射/函数:
:!echo %
打印当前缓冲区的相对路径到终端,在那里你可以复制它,然后输入回vim。(如前所述,您可以在命令后加上:p或:t以获得绝对或basename,如果您能记住....)