¿Cómo puedo hacer que la columna de signos aparezca todo el tiempo, incluso si no se le han agregado signos?

32

Acabo de agregar el complemento Git Gutter para Vim que muestra líneas agregadas / modificadas / eliminadas según git diff. Utiliza el Sign Columnpara mostrar caracteres al lado de cada línea.

Por el momento, la columna aparece en guardar, lo cual es bastante discordante. Prefiero que la columna siempre se muestre, incluso si está vacía.

¿Cómo puedo hacer que la columna de signo esté siempre visible?

jordelver
fuente

Respuestas:

40

A partir de Vim 7.4.2201, puede hacer:

:set signcolumn=yes

Cp. :help 'signcolumn'. Para versiones anteriores de Vim, debe definir un signo ficticio y colocarlo en el búfer actual:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')
Ingo Karkat
fuente
14
Para que funcione en cada nuevo búfer que abra, coloque ambos autocmd BufEnter * sign define dummyy autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')en su vimrc.
akent
Parece anticuado al igual set signcolumn=yesque el truco sin travesuras.
cprn
1
@ cprn: Tienes razón; He añadido eso a mi respuesta. ¡Gracias!
Ingo Karkat
Gracias también, eliminando mi respuesta desde abajo entonces. ¡Aclamaciones!
cprn
22

Para vim-gitgutter específicamente, también puede establecer la siguiente variable en su ~/.vimrc:

let g:gitgutter_sign_column_always = 1

ACTUALIZAR

El complemento ahora emitirá una advertencia para eliminar la línea anterior y en su lugar usará:

set signcolumn="yes"
wjv
fuente
Gracias, esa opción se debe agregar después de que se publique esta pregunta. Útil para saber sin embargo.
jordelver
1
De hecho, parece que el compromiso que lo agregó se realizó el 14 de marzo de 2013, ¡exactamente dos semanas después de su pregunta!
wjv
Mientras trabajaba en otra cosa, recientemente hurgué dentro de la fuente GitGutter, y noté que establecer esta variable fuerza la visualización de la columna de signos exactamente de la misma manera que la respuesta aceptada a esta pregunta: al configurar un signo ficticio.
wjv
55
por cierto, para mí fue set signcolumn=yes sin las comillas
tam5
6

Si bien el pequeño baile que define un signo y lo coloca funciona bien, una alternativa más elegante que funciona bien para mí es:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

Y si hay ciertos tipos de archivo que se supone que no tienen la columna:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no
innaM
fuente
Error detectado al procesar comandos automáticos de BufReadPost para "*": E518: opción desconocida: signcolumn = yes
brandones
Necesita una versión más nueva de vim, @brandonjones. No estoy seguro de cuándo signcolumnse agregó, pero no está en 7.2 y está en 8.0. No recuerdo haberlo visto en 7.4, pero puede estar allí. Está presente en las versiones actuales de Vim y Neovim.
Jim Stewart