11

我想我的问题不是那么清楚,但让我试着在这里解释一下。

假设我打开了一个名为myfilename.java以下内​​容的文件

public class test{
}

现在,我想要的是替换testmyfilename. 现在要在 vim 中获取我使用的文件名,:echo expand('%:r')它给了我myfilename.

现在,我的问题是如何使用上面的输出并test用它替换并将其映射到一个键以供将来使用。我需要的是可能是这样的:

:%s/test/above_output_from_command/g
4

2 回答 2

16

你需要添加\=告诉 Vim 你正在尝试调用一个函数:

:%s/test/\=expand('%:r')/g

:help sub-replace-expression

于 2012-07-15T13:03:19.080 回答
0

对于我的应用程序,我最终使用了一个键绑定宏(不确定 VIM 名称是什么),它进行了我想要的编辑,并简单地将文件名插入到我想要的位置:

:nmap <F5> 0d$:put =expand('%:p:t')^M0ipackage ^[$a;^[

就我而言,我想插入包含目录的名称而不是文件,所以我使用了:

:nmap <F5> 0d$:put =expand('%:p:h:t')^M0ipackage ^[$a;^[

0d$删除当前行的内容,插入:put =expand('%:p:t')^M文件名,其余命令编辑命令周围的行以产生类似

package containing_directory;

在当前行。

于 2018-04-24T16:16:32.783 回答