Como posso definir uma sintaxe para destacar o nome da classe python MyClass
no vim?
class MyClass(object):
......
O Vim já destacou o nome da classe. No entanto, aparentemente o destaca com o nome da função da mesma maneira. Posso ter uma maneira melhor de destacar as duas categorias?
É o caminho certo syn match ...
? No padrão syntax/python.vim
, encontrei o seguinte:
syn match pythonFunction "\h\w*" display contained
Eu tentei, mas minha syn
definição deve estar errada, não funciona.
syn match pythonClassName "^class \(*\):" display contained
call HI('pythonClassName', 124, '', 'bold', 'bold')
HI()
é uma função autodefinida, usei-a para modificar com pythonStatement
êxito.
De fato, não sei o que realmente faz. É apenas uma tentativa. Alguém poderia me dar algumas dicas? Obrigado!
syntax on
no seu vimrc. Se estiver realçado, mas você desejar alterar o realce,:h mysyntaxfile-add
saiba como substituir o arquivo de realce da sintaxe atual. De qualquer forma, você deve ser mais específico com o que você já tentou (qual comando, em qual arquivo, etc).Respostas:
Com
:echo synIDattr(synID(line('.'), col('.'), 1), 'name')
podemos obter o nome do grupo de sintaxe, que é realmentepythonFunction
.Observando
/usr/share/vim/vim80/syntax/python.vim
, podemos ver que isso é destacado com:Não há facilidade para destacar as aulas separadamente. Se você deseja adicionar isso, pode usar algo como:
Usei greengreen porque é isso que Ruby usa, mas fique à vontade para usar a cor que desejar. Você pode destacar a
class
palavra - chave da maneira que desejar.Para fazer isso carregar após o arquivo de sintaxe Python interno, adicione-o a
~/.vim/after/syntax/python.vim
.Veja também: Corrigindo o destaque de sintaxe “ausente” para python para um iniciador geral de destaque de sintaxe e mais alguns detalhes.
fonte
X_train
inself.X_train
foi destacado da mesma maneira, o que não é esperado. Seria possível alterar apenas o realce do nome da classe?pythonAttribute
grupo de sintaxe.E28: No such highlight group name: pythonAttribute
,. Você poderia testá-lo novamente?highlight
comando e não dosyntax
comando. Tem certeza de que este código está dando esse erro? Ou é algum outro script?