我目前正在使用vim写一个很长的乳胶文件,我需要用乳胶重音字符替换所有重音字符。
示例
public function actionCanAccess()
{
echo $access = Yii::$app->user->isGuest; //this returns false
}
请注意,我不希望/不能使用包启用直接在文件中使用重音符号。
到目前为止我做了什么
我目前的解决方案:我做了几次映射,用正确的乳胶配方替换每个口音。我使用可视模式将它们应用于段落。
âttaché càsè => \^attach\'e c\`as\`e
我正在寻找
我的解决方案非常不方便,因为如果我当前的段落有不同的重音符号,我必须选择它并多次应用我的映射。
有没有办法一次性应用这些?
非常感谢!
答案 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/Á/\Á/ge
silent s/á/\á/ge
silent s/Â/\Â/ge
silent s/â/\â/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并不关心,而且整个过程非常短暂。
注意:“视图”部分用于保持光标就位。