Como configurar um marcador de comprimento de linha no vim / gvim?


75

Alguns editores de texto da GUI têm uma linha vertical que serve como marcador de comprimento de linha (ajuda a manter linhas menores que 80 caracteres nos arquivos de código-fonte).

É possível ter algo semelhante no vim / gvim? Eu sei sobre a opção de régua vim, mas não é muito útil segui-la visualmente em uma tela grande.

Edit: ao pesquisar no "colorcolumn" para saber mais, descobri que esta pergunta é uma duplicata de https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns


Respostas:


131

Apenas execute isso

:set colorcolumn=72

Você também pode prefixar o argumento com -ou +para colocar o marcador de muitas colunas à esquerda ou à direita textwidth, e ele aceita uma lista de colunas separadas por vírgula. Eu acho que a colorcolumnopção está apenas no Vim 7.3. Vejo

:help colorcolumn

8
Uau, o vim nunca deixa de me surpreender!
precisa

4
Agradável! Também é útil quando columns=80, wrapé definido e colorcolumn=81,161,241,321,401,481,561,641,721,801- mostra até 10 linhas quebradas com a primeira coluna destacada.
Amir

20

Da palestra "Mais Instantaneamente Melhor do Vim" de Damian Conway na OSCON 2013:

highlight ColorColumn ctermbg=magenta
call matchadd('ColorColumn', '\%81v', 100)

Isso resulta no caractere sendo destacado em magenta (a captura de tela aparece DarkCyan) quando a linha ultrapassa o máximo de 80 caracteres.

vim com destaque ativado

Para o gVim: é melhor mover essas duas linhas para a última parte do seu .vimrcarquivo para garantir que funcione.


Hã! Acabei de responder sua pergunta muito parecida sobre este ... mundo pequeno! superuser.com/questions/771558/…
lornix

Coloquei essa resposta e lembrei que não poderia fazê-lo no gVim, então perguntei. ;)
Isxek,

Uau, isso é realmente ótimo! Esse é o tipo de recurso que eu nem saberia procurar. Estou usando o padrão '\$81v\S'que corresponde apenas a caracteres que não são espaços em branco. Isso significa que o destaque não será exibido quando a linha tiver exatamente 80 caracteres (o que é algo que realmente me incomodou). Veja isso para obter mais informações stackoverflow.com/questions/12985042/…
fvgs 8/16

11
Deseja fazer algumas correções no meu comentário anterior. O $deveria ter sido um %. Da mesma forma, agora uso o padrão, \%81v.pois isso garante que a coluna 81 seja destacada para qualquer caractere na coluna 81, que provavelmente é o que você deseja.
Fevgs 20/06

2

Você pode tentar o seguinte:

grep '.\{81\}' file

ou

set colorcolumn=80

(ou o equivalente abreviado)

set cc=80

ou conforme mencionado acima:

match ErrorMsg '\%>80v.\+'

0

Abaixo está um truque desajeitado de Hacking Vim: A Cookbook para aproveitar ao máximo o Editor de Vim Mais Recente de Kim Schultz.

Destaca com ErrorMsg(geralmente vermelho brilhante) todas as linhas com mais de 80 caracteres. Funciona bem para mim.

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction

O que devo fazer com este trecho? Basta colocá-lo em .vimrc?
vtest 24/02

Tentar primeiro apenas chamando :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)é suficiente. Mas eu não recomendo este mais uma vez que @garyjohn sabia que algo melhor
unperson325680
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.