如何用VIM中的当前文件名替换文本?

Ran*_*Rag 7 vim replace file

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

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

public class test{
}
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是替换testmyfilename.我们得到的vim的文件名我用:echo expand('%:r')这给了我myfilename.

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

:%s/test/above_output_from_command/g
Run Code Online (Sandbox Code Playgroud)

And*_*all 12

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

:%s/test/\=expand('%:r')/g
Run Code Online (Sandbox Code Playgroud)

:help sub-replace-expression.

  • @JosiahYoder `\=` 必须位于替换的开头。您想使用字符串连接,如 `s/test/\="put this before" 。展开('%:r')/`. 同样,请参阅 Vim 帮助以获取更多信息。 (3认同)