vim 替换扩展为大写

vim substitution expand to uppercase

当我用这个命令打开它到我的 ~/.vimrc 文件时,我将我的文件的名称插入到它的骨架中:

function! HPPFile()
    silent! 0r $HOME/.vim/templates/skeleton.hpp
    %s/FileName/\=expand("%:t:r")/g
    %s/FILENAME/\U\=expand("%:t:r")\E/g
endfunction
autocmd BufNewFile *.hpp call HPPFile()

第一个扩展行效果很好 %s/FileName/\=expand("%:t:r")/gFileName 的所有实例都被文件名替换

但是第二条扩展行不起作用%s/FILENAME/\U\=expand("%:t:r")\E/g -> 看来我不能同时使用大写替换和扩展操作

我尝试了一些变体,但没有机会,我该怎么做?

来自:help sub-replace-\=

When the substitute string starts with "\=" the remainder is interpreted as an
expression.

您可以使用 :help substitute() 将您的文件名大写:

function! HPPFile()
    silent! 0r $HOME/.vim/templates/skeleton.hpp
    %s/FileName/\=expand("%:t:r")/g
    %s/FILENAME/\=substitute(expand("%:t:r"),'.*','\U&','')/g
endfunction

看来一旦进入评估模式就必须将它用于所有事情。尝试

%s/FILENAME/\=toupper(expand("%:t:r"))/g