March 20, 2020
By: Kevin
emacs中文标点映射为英文标点
文件出现中文标点会怎么样?
代码文件: 会报错,除非在注释中,或者是字符串中.
markdown/org: 特定标记要求英文字符, 中文符号会出现莫名奇妙的问题.
那有什么地方必须输入中文字符吗?
我没发现, 所以我们是不是可以把所有的汉语标点映射为英文标点呢. YES!
解决方案?
emacs中可以把中文输入的标点,或者符号,统统映射为英文标点,或者符号
(let (
($replacePairs
[
["," ","]
["。" "."]
[";" ";"]
[":" ":"]
["【" "["]
["】" "]"]
["「" "["]
["」" "]"]
["(" "("]
[")" ")"]
["!" "!"]
["、" "\\"]
["/" "/"]
["《" "<"]
["》" ">"]
["‘" "'"]
["’" "'"]
["“" "\""]
["”" "\""]
["~" "~"]
["|" "|"]
]
))
(mapcar (lambda(x) (define-key key-translation-map
(kbd (elt x 0)) (kbd (elt x 1)))) $replacePairs))
更好的方案?
这个映射的缺点
- 全局生效, 针对所有文件/mode.
- 无法关闭, 一旦映射(map)发生, 就无法unmap.
做成一个minor-mode, 用hook挂在特定的major-mode上(解决问题1), 可以随时开或者关闭(解决问题2).