经过一番搜索,我知道: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
(其中行中的前导冒号是可选的)。