我想我的问题不是那么明确,但让我试着在这里解释一下。
假设我打开了一个名为myfilename.java
的文件,其中包含以下内容
public class test{
}
现在,我想要的是用test
替换myfilename
。现在要在vim中获取文件名,我使用:echo expand('%:r')
给了我myfilename
。
现在,我的问题是如何使用上面的输出并用它替换test
并将其映射到一个键以供将来使用。我需要的可能是:
:%s/test/above_output_from_command/g
答案 0 :(得分:11)
您需要添加\=
告诉Vim您正在尝试调用函数:
:%s/test/\=expand('%:r')/g
请参阅:help sub-replace-expression
。
答案 1 :(得分:0)
对于我的应用程序,我最终使用了一个keybound宏(不确定VIM的名称是什么),它完成了我想要的编辑,只是将文件名插入到我想要的地方:
:nmap <F5> 0d$:put =expand('%:p:t')^M0ipackage ^[$a;^[
就我而言,我想插入containsint目录的名称而不是文件,所以我使用了:
:nmap <F5> 0d$:put =expand('%:p:h:t')^M0ipackage ^[$a;^[
0d$
删除当前行的内容,:put =expand('%:p:t')^M
插入文件名,其余命令编辑命令周围的行以生成类似
package containing_directory;
在当前行。