如何将当前文件名插入到 Vim 的内容中?

如何将当前文件名插入到 Vim 的内容中?

经过一番搜索,我知道:echo @%vim 屏幕的底行显示当前文件名。

我想将文件名(带或不带完整路径)转储到文件的内容中,而不留下vim.

有什么办法可以做到这一点吗?

答案1

当前文件名位于"%寄存器中,因此您可以使用 ; 插入它(在插入模式下)<c-r>%。可以使用 插入完整路径<c-r>=expand("%:p")。如果你经常使用它,你可以制作一个宏。有关更多类似的技巧,请参阅:h expand:h "=

答案2

我确信还有其他方法可以做到这一点......但您想要的主要命令是:r[ead]将命令的输出插入缓冲区。

因此,仅插入文件名:

:r! echo %

并且,要包含完整路径:

:r! echo %:p

欲了解更多信息:

:help read
:help filename-modifiers 

答案3

从图中可以看出:h registers"%寄存器包含当前文件名。该:pu[t]命令将寄存器的内容插入到文本中。

因此,要插入实际的文件名,您可以在命令模式下键入以下任一命令:

:put %

或者

"%p

要插入带有完整路径的文件名,请键入

:put=expand('%:p')

在命令模式下。


更多信息:

:h pu[t]

通过键入,"rp您可以粘贴 register 的内容"r

答案4

如果您需要经常执行此操作,则将按键序列绑定到您想要的内容可能会很有用,如下所示http://vim.wikia.com/wiki/Insert_current_filename

当处于插入模式时,在光标位置插入不带扩展名的当前文件名。

:inoremap \fn <C-R>=expand("%:t:r")<CR>

要保留扩展名,请使用:

:inoremap \fn <C-R>=expand("%:t")<CR>

要插入文件正在使用的目录的绝对路径:

:inoremap \fn <C-R>=expand("%:p:h")<CR>

要插入文件正在使用的目录的相对路径:

:inoremap \fn <C-R>=expand("%:h")<CR>

以上所有内容都直接用于vim会话,或者您可以将其放入.vimrc(其中行中的前导冒号是可选的)。

相关内容