Adicionando texto à margem esquerda

7

Existe uma maneira fácil de adicionar texto à margem esquerda de um documento vim (à esquerda dos números de linha)?

Eu sei que isso é possível porque plugins como o vim-signature o fazem, mas estou curioso para saber como isso é feito e qual seria a maneira mais fácil de fazê-lo.

Steven Hall
fonte

Respostas:

10

Eu acho que o que você está se referindo é chamado de sinal pelo vim.

Adicionar um sinal parece ser um processo de duas etapas. Primeiro, você define como é a aparência e depois a coloca onde deseja.

A sintaxe básica para definir um sinal é:

:sign define {name} {argument}...

Onde {argument}...está uma série de argumentos que você pode escolher:

  • icon= caminho completo para um ícone
  • linehl= grupo de destaque para toda a linha na qual você colocará o sinal
  • text= texto a ser exibido se não houver ícone ou você executar o vim em um terminal
  • texthl= grupo de destaque para text

Para colocar seu sinal, depois de defini-lo:

:sign place {id} line={lnum} name={name} file={fname}
  • {id} é um número arbitrário que permitirá que você manipule o sinal posteriormente
  • {lnum}e {fname}são, respectivamente, o número da linha e o arquivo no qual você deseja colocar seu sinal
  • {name} é o nome do seu signo

Para listar seus sinais e ver seus atributos:

:sign list

Para remover um sinal:

:sign unplace {id} file={fname}

Exemplo de uso

:sign define mysign text=>> texthl=Search

... define o sinal mysign, que exibirá o texto >>com as cores do grupo de destaque Search.

Agora, supondo que você esteja editando o arquivo /tmp/foo, você pode colocar seu sinal na 10ª linha com:

:sign place 9999 line=10 name=mysign file=/tmp/foo

Aqui o id 9999 foi escolhido.

Por fim, para remover o sinal que você acabou de colocar:

:sign unplace 9999 file=/tmp/foo

Existem muitas outras maneiras de definir, colocar e substituir um sinal.
Para mais informações, veja:

:help sign-commands
:help :sign-define
:help :sign-undefine
:help :sign-list
:help :sign-place
:help :sign-unplace
:help :sign-place-list
:help :sign-jump
saginaw
fonte
11
Era exatamente isso que eu estava procurando:) ... inicialmente eu queria saber por curiosidade e também porque eu uso a assinatura vim e gitgutter para vim, mas ambos usam a coluna de sinal. Eu queria ver se poderia adicionar uma coluna de sinal extra para poder usar as informações de ambos os plugins simultaneamente, mas parece que isso não é possível. Descobri que a assinatura vim tem uma bandeira que você pode definir que ajuda nisso. Veja o problema que eu abri aqui, que também tem minha solução e um link para o commit que fiz no meu vimrc para usá-lo.
Steven Hall