vim - 替换所有重音

时间:2017-01-23 08:29:38

标签: vim latex

我目前正在使用vim写一个很长的乳胶文件,我需要用乳胶重音字符替换所有重音字符。

示例

public function actionCanAccess()
{
    echo $access = Yii::$app->user->isGuest;  //this returns false

}

请注意,我不希望/不能使用包启用直接在文件中使用重音符号。

到目前为止我做了什么

我目前的解决方案:我做了几次映射,用正确的乳胶配方替换每个口音。我使用可视模式将它们应用于段落。

âttaché càsè => \^attach\'e c\`as\`e

我正在寻找

我的解决方案非常不方便,因为如果我当前的段落有不同的重音符号,我必须选择它并多次应用我的映射。

有没有办法一次性应用这些?

非常感谢!

2 个答案:

答案 0 :(得分:0)

您可以使用|将这些命令链接到一个命令中(此处由\转义,因为它是地图定义的一部分,而不是"定义地图然后运行此命令替代&#34):

vnoremap yourMapping :s/é/\\'e/g \| '<,'>s/è/\\`e/g " … other substitutions separated by \| 

我还会在最后添加<Ctrl-v><enter,以避免按Enter键来运行替换。还有一个e标志来阻止No match错误,这些错误会破坏以下命令。

答案 1 :(得分:0)

我的设置多年来一直有这个功能:

function Entities()
  let b:winview = winsaveview()
  silent s/Á/\&Aacute;/ge
  silent s/á/\&aacute;/ge
  silent s/Â/\&Acirc;/ge
  silent s/â/\&acirc;/ge
  [... and 234 more lines like these ...]
  if(exists('b:winview'))
    call winrestview(b:winview)
  endif
endfunction

您可以非常轻松地根据自己的需求进行调整:

function LatexAccents()
  let b:winview = winsaveview()
  silent s/è/\\`e/ge
  silent s/ê/\\^e/ge
  silent s/à/\\`a/ge
  silent s/î/\\^i/ge
  [... and so on ...]
  if(exists('b:winview'))
    call winrestview(b:winview)
  endif
endfunction

我必须补充说,在单行或段落上运行238次替换听起来真的很愚蠢和浪费但是Vim并不关心,而且整个过程非常短暂。

注意:“视图”部分用于保持光标就位。