Математические символы в vim

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

Например:

& пе; становится ≠

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

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


Обновлено: Решенный, bignose пришел с решением.

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

см. ': help digraphs' для документации

Я все еще ищу моноширинный шрифт 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

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

au BufNewFile,BufRead *.txtmt   setf mathdoc

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

:set ft=mathdoc

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

в режиме вставки: нажмите кнопку управления + k, а затем:

& there4; S *

& п; is!=

& сумма; + Z

& эквив; = 3

& LARR; < =

→ = =

& Harr; is ==

& FORALL; FA

& существуют; есть ТЕ

& п; is -)

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

В таблице в приведенной выше ссылке указаны номера символов, которые вам нужны, чтобы найти быстрые клавиши, 8756 is & there4; например

Ответ 1

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

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

Ответ 2

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

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

(FYI, я не знаю python, так что хотя это работает, возможно, довольно уродливо)

Вы можете использовать его в vim, выбрав строки с сущностями вы хотите преобразовать в визуальном режиме и передать их в script таким образом:

:'<,'>!python soup.py

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

&there4; i &ne; 10

И я нажал

!!python soup.py<Enter>

Он преобразует его в

∴ i ≠ 10