假设当前缓冲区是打开编辑的文件,所以:e不显示E32: No file name.
:e
E32: No file name
我想拉出以下一项或全部:
~\myfile.txt
c:\foo\bar\myfile.txt
myfile.txt
TL;博士
:let @" = expand("%")>
:let @" = expand("%")
这会将文件名复制到 unamed register ,然后您可以使用 good oldp粘贴它。当然,您可以将其映射到一个键以便更快地使用。
p
:nmap cp :let @" = expand("%")<cr>
您也可以将其用于完整路径
:let @" = expand("%:p")
解释
Vim 使用 未命名的寄存器 来存储已删除或复制(拉出)的文本,同样,当您粘贴它时,它会从该寄存器中读取文本。
使用let我们可以手动将文本存储在寄存器中,:let @" = "text"但我们也可以存储表达式的结果。
let
:let @" = "text"
在上面的例子中,我们使用了expand扩展通配符和关键字的函数。在我们的示例中,我们使用expand('%')扩展当前文件名。我们可以将其修改expand('%:p')为完整的文件名。
expand
expand('%')
expand('%:p')
详情见:help let :help expand :help registers_
:help let
:help expand
:help registers