letg:collar_marks=[[ \'`',' ̄','!','@','#','$','%','^', \'&','*','(',')','_','ー','+','=', \'[',']','{','}',';',':','’','”', \'<','>',',','.','/','?','|','¥','\',' '], \['`','~','!','@','#','$','%','^', \'&','*','(',')','_','-','+','=', \'[',']','{','}',';',':','''','"', \'<','>',',','.','/','?','|','\', '\', ' ' ] \]function!s:deStain() abort
letl:currentChar = matchstr(getline('.'),'.',col('.')-1)ifmatch(g:collar_marks,l:currentChar)==0letl:replacedChar =g:collar_marks[1][match(g:collar_marks[0],l:currentChar)]
execute 'normal r'.l:replacedChar
elseifmatch(g:collar_marks,l:currentChar)==1letl:replacedChar =g:collar_marks[0][match(g:collar_marks[1],l:currentChar)]
execute 'normal r'.l:replacedChar
endifendfunction
command! DeStain calls:deStain()