Como posso fazer com que a coluna de sinal apareça o tempo todo, mesmo que nenhum sinal tenha sido adicionado a ela?


32

Acabei de adicionar o plugin Git Gutter para Vim, que mostra as linhas adicionadas / modificadas / excluídas de acordo com git diff. Ele usa Sign Columnpara mostrar caracteres ao lado de cada linha.

No momento, a coluna aparece no save, o que é bastante chocante. Prefiro que a coluna seja sempre exibida, mesmo que vazia.

Como posso tornar a coluna de sinal sempre visível?

Respostas:


40

A partir do Vim 7.4.2201, você pode:

:set signcolumn=yes

CP. :help 'signcolumn'. Para versões mais antigas do Vim, é necessário definir um sinal fictício e colocá-lo no buffer atual:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')

14
Para fazê-lo funcionar em cada novo buffer que você abrir, coloque ambos autocmd BufEnter * sign define dummye autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')em seu vimrc.
akent

Parece ultrapassado, set signcolumn=yesassim como o truque sem travessuras.
Cprn 22/1018

1
@ CPN: Você está certo; Eu adicionei isso à minha resposta. Obrigado!
Ingo Karkat 22/10/19

Obrigado também, removendo minha resposta da parte inferior então. Felicidades!
Cprn 22/1018

22

Para vim-gitgutter especificamente, você também pode definir a seguinte variável no seu ~/.vimrc:

let g:gitgutter_sign_column_always = 1

ATUALIZAR

O plug-in agora emitirá um aviso para remover a linha acima e, em vez disso, use:

set signcolumn="yes"

Obrigado, essa opção deve ser adicionada após a postagem desta pergunta. Útil para saber embora.
jordelver

1
De fato, parece que o commit que o adicionou foi feito em 14 de março de 2013 - exatamente duas semanas após a sua pergunta!
Wjv

Enquanto trabalhava em outra coisa, recentemente vasculhei a fonte GitGutter e notei que a configuração dessa variável força a exibição da coluna de sinal exatamente da mesma maneira que a resposta aceita para essa pergunta - definindo um sinal falso.
Wjv 11/04

5
btw, para mim, foi set signcolumn=yes sem as aspas #
tam5

6

Enquanto a pequena dança que define um sinal e coloca-o funciona bem, uma alternativa mais elegante que funciona bem para mim é:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

E se houver certos tipos de arquivos que não deveriam ter a coluna:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no

Erro detectado durante o processamento BufReadPost Auto comandos para "*": E518: Opção desconhecida: signcolumn = yes
brandones

Você precisa de uma versão mais recente do vim, @brandonjones. Não tenho certeza de quando signcolumnfoi adicionado, mas não existe no 7.2 e no 8.0. Não me lembro de vê-lo na versão 7.4, mas pode estar lá. Está presente nas versões atuais do Vim e do Neovim.
Jim Stewart
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.