Answers:
当前文件名在"%
寄存器中,因此您可以使用<c-r>%
;将其插入(在插入模式下)。完整路径可以用插入<c-r>=expand("%:p")
。如果经常使用它,您可以对其进行宏化。有关更多类似技巧,请参阅:h expand
和:h "=
。
<c-r>
指定下一个字符是寄存器。
"%p
在正常或视觉模式下进行操作。
从中可以看到:h registers
,"%
寄存器包含当前文件名。该:pu[t]
命令将寄存器的内容插入文本。
因此,要插入实际的文件名,可以在命令模式下键入以下任意一个:
:put %
要么
"%p
要插入具有完整路径的文件名,请键入
:put=expand('%:p')
在命令模式下。
更多信息:
:h pu[t]
通过键入"rp
您可以粘贴register的内容"r
。
:put "%:p"
似乎并没有为我工作也。它似乎只能与expand()一起使用,如in :put =expand('%:p')
:,这使它不像<c-r>=expand('%:p')
不幸的那样麻烦。
如果您需要经常执行此操作,则按照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
(该行的前导冒号是可选的)中。
<c-r>
读错了,但是没有映射为重做命令吗?