Математические символы в vim - PullRequest
14 голосов
/ 27 марта 2009

Кто-нибудь знает, как заставить vim преобразовывать html-объекты математических символов в математические символы?

Например:

& п; становится 100

& there4; становится & there4;

вот таблица с символом html сущностей http://barzilai.org/math_sym.htm


Обновлено: Решено, бигноза прошла с решением .

с использованием функциональности: digraphs в Vim. с кодировкой символов Unicode,

см. ': Справочные руководства' для документации

Я все еще ищу моноширинный шрифт Unicode, чтобы он отображался полностью, но с дополнительными пробелами он прекрасно работает.

Чтобы увидеть математические символы, необходимо указать кодировку и шрифт UTF-8.

Я добавил следующее в мои файлы конфигурации vim.

создан пользовательский файл: 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

Я добавил это к типу файла, чтобы установить его для собственного настраиваемого расширения .txtmt

au BufNewFile,BufRead *.txtmt   setf mathdoc

но вы можете поочередно вызывать его с открытым файлом:

:set ft=mathdoc

орграф отлично работает, так как bignose, указанный ниже, вот как это работает

в режиме вставки: нажмите control + k, а затем:

* * +1039 & there4; S *

& п; есть! =

& сумма; это + Z

* +1045 * & эквив; is = 3 * * & Тысячу сорок-семь LARR; <= </p> * * & Тысяча сорок-девять rArr; is => * +1051 * & Harr; ==

& FORALL; это FA

* +1055 * & существует; это TE

& п; есть -)

см .: орграфы для полного списка * обратите внимание, если вы видите, что половина экранов стоит того, что кодировка символов не является юникодом, символы юникода покрывают несколько экранов, введите: установите encoding = utf-8 для переключения на utf-8.

Таблица в приведенной выше ссылке содержит цифры для символов, которые вам понадобятся для поиска сочетаний клавиш, 8756 - это & ​​there4; например

Ответы [ 2 ]

22 голосов
/ 27 марта 2009

Вы хотите то, что Vim называет «орграфами» : прочитайте :help digraphs, чтобы увидеть, как они используются, и :digraphs, чтобы перечислить определенные в вашем Vim.

Сводка: в режиме вставки нажмите Ctrl + K (что заставляет Vim отображать подсвеченный ?, ожидая дальнейшего ввода), затем задайте два символа орграф. Затем Vim заменяет то, что вы ввели, на определенный результирующий символ Например. Ctrl + K , ! , = производит ‘≠’.

4 голосов
/ 27 марта 2009

Я не уверен, что существуют библиотеки для этого в чистом vimscript, однако, vim действительно позволяет встраивать Python, а в Python есть BeautifulSoup , который может обрабатывать преобразования html-сущностей в unicode * * 1005

У меня не включена поддержка python в моем vim, поэтому мне пришлось согласиться на написание внешнего скрипта 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

Например, если мой курсор находился в строке, читающей

&there4; i &ne; 10

И я ударил

!!python soup.py<Enter>

Это преобразовало бы это в

∴ i ≠ 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...