Faça com que o Vim exiba uma linha na borda da largura de texto do conjunto

25

A maioria dos editores de texto e IDEs que eu uso atualmente tem um recurso onde eles podem exibir uma linha em um determinado comprimento de caractere no buffer de texto. É útil quando você deseja manter linhas em um arquivo com um determinado tamanho.

Existe alguma maneira de fazer com que o Vim faça isso, de preferência usando o valor textwidth já definido? As linhas serão automaticamente quebradas nesse ponto, mas eu realmente gostaria de poder ver onde está.

Caso isso seja importante, estou usando principalmente o gVim no Windows, mas adoraria se a solução funcionasse nas versões do Vim.

    
por Herms 13.08.2009 / 21:24

5 respostas

38

para (g) vim, use o seguinte:

set colorcolumn=80

ou qualquer largura que você desejar. Funciona em ambos os vim & gvim. Eu tenho o meu dentro de um IF, então é condicional com base no tipo de arquivo que eu edito.

Você também pode usar um + x / -x para a posição base da coluna +/- da & largura de texto.

set textwidth=80
set colorcolumn=-2

seria eficaz desenhar a barra colorida na posição do caractere 78. Claro, você pode ou não definir a largura de texto você mesmo, por isso pode ser 0 (padrão). Eu uso a forma de posição absoluta.

Você também pode alterar a cor usada se desejar:

highlight ColorColumn ctermbg=green guibg=orange

(Eu não recomendo essas cores embora)

Esta opção foi adicionada em (g) vim 7.3.

    
por 05.11.2010 / 17:39
3

Há um snippet no Google Code que você pode experimentar:

augroup vimrc_autocmds
au!
    autocmd BufRead * highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
    autocmd BufRead * match OverLength /\%81v.*/
augroup END
    
por 13.08.2009 / 21:37
2

Por Resposta do StackOverflow :

highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.*/

Ajuste para se adequar ao seu gosto.

    
por 13.08.2009 / 21:45
1

Eu gosto lornix 'responda muito, mas não quero destacar a coluna o tempo todo , somente quando pelo menos uma linha exceder o limite de tamanho:

VejacomofaçoissoparameusarquivosHaskell:

augroupHaskellCommandsautocmd!" When a Haskell file is read or the text changes in normal or insert mode,
  " draw a column marking the maximum line length if a line exceeds this length
  autocmd BufRead,TextChanged,TextChangedI *.hs call ShowColumnIfLineTooLong(80)
augroup END

" Color the column marking the lengthLimit when the longest line in the file
" exceeds the lengthLimit
function! ShowColumnIfLineTooLong(lengthLimit)
  " See https://stackoverflow.com/questions/2075276/longest-line-in-vim#2982789
  let maxLineLength = max(map(getline(1,'$'), 'len(v:val)'))

  if maxLineLength > a:lengthLimit
    highlight ColorColumn ctermbg=red guibg=red
    " Draw the vertical line at the first letter that exceeds the limit
    execute "set colorcolumn=" . (a:lengthLimit + 1)
  else
    set colorcolumn=""
  endif
endfunction
    
por 26.01.2018 / 13:05
0

Isso foi frequentemente discutido em #vim e em alguns fóruns. Tanto quanto as coisas estão agora, não é possível. Então a solução mencionada é sua única opção, afaik.

A coisa é, o vim pode fazer qualquer coisa com lugares onde haja personagens (sejam letras, números ou apenas espaços em branco). Mas não pode pintar um fundo em uma cor diferente (como você gostaria), se não houver nada lá. E antes de digitar algo, não há nada lá, por isso não é possível desenhar uma linha / margem.

    
por 14.08.2009 / 00:56

Tags