有谁知道如何让vim将数学符号的html实体转换为数学字符?
例如:
&安培; NE;变成≠
&安培; there4;变成∴
这是一个带有符号html实体的表 http://barzilai.org/math_sym.htm
<小时/> 更新:Solved, bignose came through with the solution。
使用Vim的digraphs功能。使用Unicode的字符编码,
参见':help digraphs'获取文档
我仍然在寻找一种等宽的Unicode字体,因此它可以完全呈现,但是有了额外的空间,它可以很好地工作。
为了查看数学字符,UTF-8必须是编码和显示这些字符的字体。
我在vim配置文件中添加了以下内容。
使用syntax /
创建自定义文件:mathdoc.vim" set the encoding to be utf-8, requires gVim or a terminal capable of
" unicode see ':help Unicode' for details
set encoding=utf-8
" requires a font that has characters for the higher uniocode symbols
set guifont=MS\ Gothic
我将此添加到filetype,以便为我自己的自定义扩展名.txtmt
设置此项au BufNewFile,BufRead *.txtmt setf mathdoc
但你也可以打开文件打电话:
:set ft=mathdoc
digraphs效果很好,因为下面指出的bignose是如何工作的
在插入模式下: 按控制+ k后跟:
∴是S *
≠是!=
Σ是+ Z
≡是= 3
⇐是&lt; =
⇒是=&gt;
⇔是==
∀是FA
∃是TE
∋是 - )
请参阅:有关完整列表的有向图 *请注意,如果你只看到半个屏幕值得你,字符编码不是unicode,unicode字符覆盖几个屏幕,输入:set encoding = utf-8切换到utf-8。
上面链接中的表格中包含了查找键盘快捷键所需字符的数字,例如8756是<
答案 0 :(得分:22)
你希望 Vim称之为“有向图”:阅读:help digraphs
以查看它们的使用方式,并:digraphs
列出Vim中已定义的内容。
总结:在插入模式下,按 Ctrl + K (这会导致Vim显示突出显示的?
,等待进一步输入),然后定义有向图的两个字符。然后Vim用您定义的结果字符替换您键入的内容。例如。 Ctrl + K ,!, = 产生'≠'。
答案 1 :(得分:4)
我不确定在纯vimscript中存在这样做的库,但是,vim允许你嵌入Python,而Python有BeautifulSoup可以处理converting html entities to unicode:
我没有在我的vim上启用python支持,所以我不得不考虑编写一个外部脚本soup.py
,它将html实体转换为UTF-8:
# soup.py
from BeautifulSoup import BeautifulStoneSoup
import sys
input = sys.stdin.read()
output = str(BeautifulStoneSoup(input, convertEntities=BeautifulStoneSoup.HTML_ENTITIES))
sys.stdout.write(output)
(仅供参考,我不知道python,所以尽管有效,但它可能非常难看)
您可以通过选择包含实体的行在vim中使用它 你想在视觉模式下转换,并将它们传递给脚本:
:'<,'>!python soup.py
例如,如果我的光标在读取行
上∴ i ≠ 10
我点击了
!!python soup.py<Enter>
它会将其转换为
∴ i ≠ 10