VIM:用相应的重音字母替换[aeiou]'

Iaz*_*zel 8 vim digraphs

我知道VIM支持有向图,如果可以使用:s命令,那将是完美的,但我找不到使用它的方法!

我想是这样的:

:%s/\([aeiouAEIOU]\)'/\=digraph(submatch(1)."!")/g
Run Code Online (Sandbox Code Playgroud)

会很完美,但我找不到digraph功能.提前致谢.

编辑
好了,在内置的VIM功能中进行了一些挖掘之后,我找到tr了问题的第一个解决方案:

:%s/\([aeiouAEIOU]\)'/\=tr(submatch(1), 'aeiouAEIOU', 'àèìòùÀÈÌÒÙ')/g
Run Code Online (Sandbox Code Playgroud)

但是,我仍然想知道是否有一种方法可以digraph在表达式中使用:)

FDi*_*off 5

function! Digraph(letter, type)
    silent exec "normal! :let l:s = '\<c-k>".a:letter.a:type."'\<cr>"
    return l:s
endfunction
Run Code Online (Sandbox Code Playgroud)

此功能允许您生成所需的任何有向图.

<c-k><char><char>通过使用普通命令运行并将其分配给局部变量s来模拟键入.然后它返回s.

定义此功能后,您可以像这样使用它.

:%s/\([aeiouAEIOU]\)'/\=Digraph(submatch(1), "!")/g
Run Code Online (Sandbox Code Playgroud)

注意:这是基于EasyDigraph的源代码