Realce personalizado do vim

11

Eu estou editando alguns xml agora e tenho me deixado alguns comentários de coisas para voltar. Assim

<!-- Question: bla bla -->

Eu estou editando com o vim agora e gostaria que o vim destacasse o Question agora para que eu possa facilmente olhar o meu código e encontrar todos os lugares que eu preciso olhar. Eu sei que preciso adicionar algo no meu vimrc, mas acho que posso estar procurando a coisa errada.

Atualizar

Eu tentei colocar isso no meu .vimrc , mas não teve efeito:

syn keyword JakeAnnotation      Question

hi JakeAnnotation gui=bold term=bold cterm=bold

Atualização 2

Na verdade, posso ver que o que fiz antes teve algum efeito porque, quando faço isso:

:hi

Ele mostra todas as coisas que está destacando e uma das entradas é:

JakeAnnotation xxx term=bold cterm=bold ctermbg=6

( e o xxx está formatado corretamente )

Isso me leva a acreditar que simplesmente não estou definindo a pergunta corretamente. A pergunta precisa estar em uma linha por si só?

Atualização 3

Ok, então post do usuário 22303 eu tenho esse trabalho:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/

No entanto, suspeito que você só tem permissão para ter uma correspondência por arquivo. Porque quando eu faço isso:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/
highlight MyRelook cterm=bold term=bold ctermbg=blue ctermfg=black
match MyRelook /Another look/

O primeiro pára de funcionar. (Mas o segundo funciona).

    
por sixtyfootersdude 17.02.2010 / 16:49

6 respostas

8

Acho que estamos lhe dando algumas respostas que não estão certas. Aqui está algo para tentar que eu testei na minha máquina.

Primeiro, crie seu próprio novo grupo de destaque:

:highlight MyQuestions guifg=red guibg=green

Agora, especifique que o grupo de destaque existirá sempre que um padrão for correspondido:

:syntax match MyQuestions /Question/

Isso deve começar a mostrar o destaque do texto "Pergunta" em cada linha que tenha esse texto. Para expandir para mostrar toda a linha, você alteraria o texto da pesquisa para que os curingas correspondessem à linha inteira, algo assim:

:syntax match MyQuestions /.*Question.*/

    
por 17.02.2010 / 23:21
5

O arquivo que você está procurando é um arquivo 'sintaxe'. Tente procurar em /usr/local/share/vim/syntax/ ou /usr/share/vim/syntax/ . O arquivo que você deseja é xml.vim.

A coisa mais simples a fazer é encontrar a linha que tem

syn keyword xmlTodo         contained TODO FIXME XXX

e altere para:

syn keyword xmlTodo         contained TODO FIXME XXX Question

Isso adicionará o destaque "Todo" a qualquer comentário que contenha o texto Question .

Se você for usar isso para (sempre), seria melhor copiar o xml.vim para o seu local ~/.vim/syntax , para que as alterações no vim não sobrescrevam o seu arquivo de sintaxe personalizado.

Atualizar

Se você quiser um recurso similar (sortof) no arquivo any , eu usaria o comando 'goto'. Eu admito que isso é como hlsearch, o que você disse que te incomoda.

Durante a edição, quando o cursor estiver sobre uma palavra, digite gd para pesquisar a partir do ponto atual no arquivo ou gD para pesquisar desde o início. Cada palavra no seu arquivo que corresponde à palavra atual é destacada. Você pode digitar n para ir para a próxima instância dessa palavra.

Eu costumo fazer isso, porque você tem destaque e navegação com digitação mínima. Você desativa o destaque da maneira usual: :noh[lsearch]

    
por 17.02.2010 / 17:29
2

Você poderia simplesmente fazer

:set hlsearch

E, em seguida, pesquise a pergunta

    
por 17.02.2010 / 17:09
2

Você tem várias opções.
- um, como o Dominik mencionou ... você pode procurar por um por um (não é prático)
- dois, você pode fazer ": g / < - Pergunta" para obter uma "lista" de todos eles (um pouco melhor, dá uma visão geral)
- três, você pode configurar um grupo de destaque se estiver usando apenas esse tipo de comentário em arquivos xml (não tenho idéia de como é o xml, então não sei se há algum outro tipo de comentário neles também). Isso seria bom se você o configurasse no vimrc, já que quando você atualiza o vim com uma versão mais nova, seu arquivo xlm.vim será removido.

    
por 17.02.2010 / 17:25
1

Você não precisa necessariamente colocar o comando em seu vimrc. Você pode sempre apenas inseri-lo na linha de comando e depois desmarcá-lo quando não quiser mais o realce. Comandos seria algo assim:

: oi Pergunta guifg = guibg vermelho = azul gui = negrito

No gvim (isto é, vim com um gui) que irá definir as configurações de primeiro plano (guifg), plano de fundo e caractere geral.

se você quiser se livrar dessa iluminação, faça o seguinte:

: oi Pergunta clara

Usando o vim dentro de um terminal você pode modificar para usar este comando:

: hi Pergunta ctermfg = red ctermbg = termo azul = negrito

Você pode colocar qualquer um deles em seu vimrc, e você também pode combinar as bandeiras de gui e de termo em um único comando hi.

[adicionado abaixo depois que eu li a resposta de outro pôster]

Desculpe, presumi que a sintaxe de suas linhas de pergunta já correspondia às configurações do seu arquivo de sintaxe para a tag de destaque 'Pergunta' integrada do Vim. Basta olhar para a outra resposta que menciona o arquivo de sintaxe xml para o vim e, em seguida, você pode emitir comandos acima usando o grupo de destaque ToDo em vez de questionar.

    
por 17.02.2010 / 17:39
0

Estou atrasado para a festa, mas uso TODO e FIXME exatamente para essa situação.

A maioria dos esquemas de cores, se não todos, destacará TODO no exemplo a seguir com alguma combinação de cor de fundo, sublinhado e itálico:

<tree>
  <!--TODO : do I have to add a trunk tag ?-->
  <branch>
    <leaf>caterpillar</leaf>
    <leaf>caterpillar</leaf>
  </branch>
</tree>

Realmente não se encaixa semanticamente, mas funciona muito bem do ponto de vista puramente funcional.

    
por 01.10.2011 / 21:30