VIM:将[aeiou]替换为相应的重音字母 - 例外

时间:2018-05-07 21:50:34

标签: vim

每当字母aiouAIOU后跟符号'时,我想指示VIM自动用带有重音字母的字母替换字母(删除')。

字母“e”(和E)是一个例外:如果前面有空格或CR后跟',则变为è(和È;同时删除'),否则变为é。

这并不能完全捕捉意大利语的规则,但对我来说这是一个开始。

我目前在我的.vimrc中使用它 nnoremap <leader>, :%s/\([aeiouAEIOU]\)'/\=tr(submatch(1), 'aeiouAEIOU', 'àèìòùÀÈÌÒÙ')/g<CR>

我应该如何扩展它以执行我正在寻找的条件替换,一次性?

1 个答案:

答案 0 :(得分:1)

我不知道如何输入大写é ..所以我只使用xX。这个cmd应该有所帮助:

%s/\v(\s|\_^)([eE])'/\=tr(submatch(2),'eE','èÈ')/g|%s/\v([aeiouAEIOU])'/\=tr(submatch(1), 'aeiouAEIOU', 'àxìòùÀXÌÒÙ')/g

您也可以在地图中使用它。