如何在vim中插入不带路径的文件名

9

我知道在插入模式下可以使用CTRL-R-%插入带有路径的文件名。

但是我想仅插入文件名而不包括路径。是否有类似的命令可用?


1
嗯,对我来说 Ctrl-R % 已经给出了基本名称。也许这取决于某些配置参数?可能在 Unix SE 上也是一样的:http://unix.stackexchange.com/questions/57555/vim-insert-current-filename-into-the-contents - Ciro Santilli OurBigBook.com
你可以使用 :r! echo % 此答案完全归功于 - Hub 20xx
2个回答

10

您可以使用

<C-r>=expand("%:t")<CR>

请参见:help filename-modifiers

编辑

<C-r>用于插入模式下插入寄存器的内容。"%是包含当前文件名的寄存器。

"=是表达式寄存器,它包含=后面表达式的结果:

<C-r>=2+27+6<CR>        --> 35
<C-r>=expand("%:t")<CR> --> file.txt

这是一个映射命令吗?这会影响其他C-R命令,例如<C-R>w吗? - schurik
不,这是您必须在插入模式下键入的内容,以便插入不带路径的文件名:Ctrl+r,然后 =,然后 expand("%:t"),最后 Enter。抱歉,没有快捷方式可用。如果您想要自定义映射,请将 inoremap <expr> <F6> expand("%:t") 添加到您的 ~/.vimrc 中。 - romainl
@ChrisStryczynski 请在用户手册中查看 :help 40.2 - romainl
你还可以使用expand("%t:r")来删除扩展名(对于那些不想阅读帮助文档的人来说 :))。 - galva

2

在插入模式下,您可以使用以下命令:

CTRL-R =expand('%:t')

这是一个映射命令吗?这会影响其他C-R命令,例如<C-R>w吗? - schurik
@schurik - romainl已经对您的评论进行了彻底的回答。如果仍有不清楚的地方,请随时提问。 - Lieven Keersmaekers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接