假设当前缓冲区是一个打开编辑的文件,因此:e
不会显示E32: No file name
。
我想撤回以下一项或全部:
- 文件名与状态行上显示的完全相同,例如
~\myfile.txt
- 文件的完整路径,例如
c:\foo\bar\myfile.txt
- 只是文件名,例如
myfile.txt
最佳答案
TL;DR
:let @" = expand("%")
这会将文件名复制到未命名的寄存器,然后您可以使用旧的 p
粘贴它。当然,您可以将其映射到一个键以便更快地使用。
:nmap cp :let @" = expand("%")<cr>
您也可以使用它作为完整路径
:let @" = expand("%:p")
说明
Vim 使用未命名寄存器来存储已删除或复制(拉出)的文本,同样,当您粘贴它时,也会从该寄存器中读取文本。
使用let
我们可以使用:let @" = "text"
手动将文本存储在寄存器中但我们也可以存储表达式的结果。
在上面的示例中,我们使用函数 expand
它扩展了通配符和关键字。在我们的示例中,我们使用 expand('%')
扩展当前文件名。我们可以修改为expand('%:p')
获取完整文件名。
参见:help let
:help expand
:help registers
了解详情
关于vim - Vim 中当前缓冲区的 Yank 文件名/路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916875/