经过一番搜索,我知道:echo @%
在 vim-screen 的底行显示当前文件名。
我想将文件名(带和不带完整路径)转储到文件的内容中而不离开vim
.
有没有办法做到这一点?
Kev*_*vin 46
当前文件名在"%
寄存器中,因此您可以插入它(在插入模式下)<c-r>%
;可以插入完整路径<c-r>=expand("%:p")
。如果你经常使用它,你可以制作一个宏。有关更多类似技巧,请参阅:h expand
和:h "=
。
J.C*_*ski 33
我确定还有其他方法可以做到这一点……但是您想要的主要命令是:r[ead]
将命令的输出插入缓冲区。
因此,仅插入文件名:
:r! echo %
Run Code Online (Sandbox Code Playgroud)
并且,要包含完整路径:
:r! echo %:p
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息:
:help read
:help filename-modifiers
Run Code Online (Sandbox Code Playgroud)
小智 17
从 中可以看出:h registers
,"%
寄存器包含当前文件名。该:pu[t]
命令将寄存器的内容插入到文本中。
因此,要插入实际文件名,您可以在命令模式下键入以下任一命令:
:put %
Run Code Online (Sandbox Code Playgroud)
或者
"%p
Run Code Online (Sandbox Code Playgroud)
要插入带有完整路径的文件名,请键入
:put=expand('%:p')
Run Code Online (Sandbox Code Playgroud)
在命令模式下。
更多信息:
:h pu[t]
Run Code Online (Sandbox Code Playgroud)
通过键入"rp
您可以粘贴 register 的内容"r
。
一个简单的方法是运行:
!!echo %
Run Code Online (Sandbox Code Playgroud)
!!
正在用它后面的命令的结果替换当前行。
%
被命令中的已编辑文件的名称替换,因此这将有效地将该名称插入到已编辑的文件中。
文件名是您传递给 vi(m) 命令的文件名,可能包含相对或绝对路径。如果您想删除它并只保留文件名,请运行
!!basename %
Run Code Online (Sandbox Code Playgroud)