Вы должны добавить круглые скобки. Forumela должна выглядеть так: (I3-0,35) * (1-5,79%)
Если я пойму правильно, и Вы пытаетесь посмотреть на несоответствие круглой скобке в коде C (который был сгенерирован в Python), то я рекомендую установить rainbow.vim от Сайта доктора Chip. Это выделит фигурные скобки в различных цветах в зависимости от уровней добавления отступа и выделит несоответствие фигурным скобкам красного цвета, как Вы запросили. Снимок экрана http://img294.imageshack.us/img294/8586/rainbow.jpg http://img294.imageshack.us/img294/8586/rainbow.jpg
Для установки загрузить rainbow.vim
и место в vimfiles/after/syntax/c/
(создайте этот каталог, если он не присутствует).
На Linux это будет ~/.vim/after/syntax/c/rainbow.vim
В Windows это может быть c:\vim\vimfiles\after\syntax\c\rainbow.vim
или возможно где-то в другом месте, посмотрите :help runtimepath
.
Обратите внимание, что существуют некоторые плагины тот конфликт с rainbow.vim
, но не слишком трудно заставить их сотрудничать.
При попытке выделить несоответствие круглой скобке в коде Python, Вы могли бы изменить rainbow.vim для использования кластеров синтаксиса Python вместо C, но это немного более включено, но Вы могли использовать что-то вроде (измененная версия кода радуги доктора Chip):
syn cluster pyParenGroup contains=pythonString,pythonRawString,pythonEscape,pythonNumber,pythonBuiltin,pythonException
syn match pyParenError display ')'
syn region pyParen transparent matchgroup=hlLevel0 start='(' end=')' contains=@pyParenGroup,pyParen1
syn region pyParen1 transparent matchgroup=hlLevel1 start='(' end=')' contains=@pyParenGroup,pyParen2
syn region pyParen2 transparent matchgroup=hlLevel2 start='(' end=')' contains=@pyParenGroup,pyParen3
syn region pyParen3 transparent matchgroup=hlLevel3 start='(' end=')' contains=@pyParenGroup,pyParen4
syn region pyParen4 transparent matchgroup=hlLevel4 start='(' end=')' contains=@pyParenGroup,pyParen5
syn region pyParen5 transparent matchgroup=hlLevel5 start='(' end=')' contains=@pyParenGroup,pyParen6
syn region pyParen6 transparent matchgroup=hlLevel6 start='(' end=')' contains=@pyParenGroup,pyParen7
syn region pyParen7 transparent matchgroup=hlLevel7 start='(' end=')' contains=@pyParenGroup,pyParen8
syn region pyParen8 transparent matchgroup=hlLevel8 start='(' end=')' contains=@pyParenGroup,pyParen9
syn region pyParen9 transparent matchgroup=hlLevel9 start='(' end=')' contains=@pyParenGroup,pyParen
hi link pyParenError Error
if &bg == "dark"
hi default hlLevel0 ctermfg=red guifg=red1
hi default hlLevel1 ctermfg=yellow guifg=orange1
hi default hlLevel2 ctermfg=green guifg=yellow1
hi default hlLevel3 ctermfg=cyan guifg=greenyellow
hi default hlLevel4 ctermfg=magenta guifg=green1
hi default hlLevel5 ctermfg=red guifg=springgreen1
hi default hlLevel6 ctermfg=yellow guifg=cyan1
hi default hlLevel7 ctermfg=green guifg=slateblue1
hi default hlLevel8 ctermfg=cyan guifg=magenta1
hi default hlLevel9 ctermfg=magenta guifg=purple1
else
hi default hlLevel0 ctermfg=red guifg=red3
hi default hlLevel1 ctermfg=darkyellow guifg=orangered3
hi default hlLevel2 ctermfg=darkgreen guifg=orange2
hi default hlLevel3 ctermfg=blue guifg=yellow3
hi default hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
hi default hlLevel5 ctermfg=red guifg=green4
hi default hlLevel6 ctermfg=darkyellow guifg=paleturquoise3
hi default hlLevel7 ctermfg=darkgreen guifg=deepskyblue4
hi default hlLevel8 ctermfg=blue guifg=darkslateblue
hi default hlLevel9 ctermfg=darkmagenta guifg=darkviolet
endif
Править:
Как тест, я загрузил gvim70.zip и vim70rt.zip из ftp://ftp.vim.org/pub/vim/pc/ (это версии Windows Vim 7.0). Я разархивировал эти два файла в новый каталог и работал gvim.exe
от vim/vim70/gvim.exe
. У меня нет конфигурации энергии сохраненной в "C:\Documents and Settings", так выполнение этой энергии совпадает с выполнением 'ванильной' конфигурации. Я затем загрузил pyprint.py
из amk.ca/python/simple/pyprint.html как часть примера кода и скопированный вышеупомянутый код в файл, названный code.vim. В gVim я вошел :e pyprint.py
. Это открылось в окне белого фона без подсветки синтаксиса. Я затем вошел :syntax on
, который включил подсветку синтаксиса по умолчанию. Я добавил секунду )
символ на строке 8. Наконец, я вошел :source code.vim
, который сделал второе )
символ быть выделенным в красном.
Я также выполнил этот тест на Linux (с Vim 7.2) путем ввода следующей последовательности команды:
cd ~
mv .vimrc old_dot_vimrc
mv .gvimrc old_dot_gvimrc
mv .vim old_dot_vim
vim pyprint.py
:e pyprint.py
" Add extra bracket here!
:syntax on
:source code.vim
Снова, вторая скобка выделяется, и все остальное кажется нормальным.
Можно заставить энергию делать противоположное: сделайте a
:set showmatch
и это выделит соответствие parens. Вы будете знать, когда Вы будете несбалансированными, когда это не выделяет что-то.
Я также предполагаю, что Вы знакомы с командой '%', которая возвращает Вас к элементу соответствия.
Временное решение:
:imap ( ()<C-[>i
Это сделает его так каждым разом, когда Вы вводите левый paren, это автоматически вставит право и поместит Вас в положение ввода промежуточного.
Не уверенный, если это будет более или менее сбивать с толку Вас, но Вы могли бы посмотреть на lisp.vim
файл синтаксиса (особенно часть, где g:lisp_rainbow
обрабатывается) видеть, как можно выделить соответствие parens.
Если Вам удается выделить все соответствие parens, у Вас мог бы быть остаток parens (т.е. несопоставленный parens) имеют Ошибку по умолчанию при выделении. Это - то, что файл шепелявости, кажется, делает.
syn match parenError ")"
syn region matchingParens transparent start="(" end=")" contains=matchingParens
hi parenError guifg=red
Если Вы :syn clear
и выполненный они, это, кажется, работает. Обратите внимание что порядок syn
команды выполняются вопросы. На :h :syn-priority
, правило, подобранное в последний раз, является тем, которое вступает в силу, который может быть, почему Ваши правила выделили весь конец-parens в файле.
То, что на самом деле делает c.vim, выделяет любого {}
в ()
, закрывается ли все правильно или нет. Попытайтесь ввести ({})
в режиме C это все еще выделяется {}
как ошибка.
Я не думаю, что этот подход может использоваться для тестирования непосредственно на a (
с несопоставленным )
, потому что :syn region
не заботится, является ли шаблон конца там или нет.
Таким образом, необходимо найти что-то определенным для Python, который никогда не должен принадлежать внутри ()
. Затем соответствие против "(\_[^)]*the_forbidden_something"
. Я не знаю, что Python достаточно знает, каково это могло бы быть.
Если ничто иное, можно сделать:
syn match openParen "(\_[^)]*\%$"
который соответствует открытому paren без закрытия parens до конца. Это перестало работать, если это находит какое-либо закрытие paren вообще, что означает, что это даже не поймает (()<EOF>
.
Вы попытались использовать matchit.vim? Это поддерживает все виды соответствий, и это должно работать в Python.
Как обходное решение, я нашел этот сценарий отступа на веб-сайте энергии, который, предположительно, делает лучшее задание форматирования кода Python. При окончании строки несбалансированным parens это располагает следующую строку с отступом для выстраивания в линию с открытым paren.