Quero usar o recurso de quebra automática de linha ( :set wrap
) do Vim para quebrar algum código com 80 caracteres, independentemente da largura real da janela.
Ainda não consegui encontrar uma maneira de fazer isso - todo o invólucro macio parece amarrado à largura da janela
textwidth
ewrapmargin
são ambos para quebra automática (eles inserem caracteres de nova linha no arquivo)- dividir verticalmente em várias janelas e usar
:vertical resize 80
(possivelmente com:set breakat=
para permitir quebras em qualquer caractere) em uma delas meio que funciona (mesmo que seja um pouco tolo), mas é interrompido ao usar:set number
como os números de linha ocupam um número variável de colunas (dependendo no tamanho do arquivo) e fazem parte dos anos 80.
Existe alguma maneira de fazer isso no vim? Não parece promissor, de acordo com outras fontes .
No momento, minha aproximação é apenas ter /^.\{80}\zs.\+
como minha pesquisa padrão, pelo menos é destacada. Pensei em adicionar um :syntax
item para ele, mas ele quebrou quando se sobrepôs a outros itens de sintaxe, então deixei de lado essa ideia.
Respostas:
Você poderia
:set numberwidth=6
e:set columns=86
(ou com o mouse) para o tamanho adequado.Se você editar um arquivo com um milhão de linhas, poderá ter problemas, mas isso é improvável. Você também está desperdiçando 6 colunas do espaço da tela. Portanto, ainda existem todos os tipos de problemas.
Você pode destacar a coluna 80 usando o
:match
que diz aqui e aqui .Além disso, não vejo como fazer isso. Parece que seria um bom recurso.
fonte
Tente o seguinte:
Você pode remover o
if (&columns > 80) |
se quiser sempre 80 colunas.fonte
Não tenho uma solução para o envoltório flexível, mas quanto à marcação de uma coluna, a partir do Vim 7.3 (lançado em 15/08/2010)
:set colorcolumn=80
destacará a coluna 80. A cor dependerá do seu arquivo de sintaxe.Veja Vim 80 coluna layout de preocupações ,
:h colorcolumn
.fonte
:let w:eighty_column_match = matchadd('ColorColumn', '\%81v.\+', 100)
colorwidth
coisa é útil por outros motivos, por isso estou feliz por você ter postado isso.Você já tentou
'linebreak'
?fonte
breakat
é apenas um padrão (não um comprimento), então eu não vejo como eu poderia usar isso para forçar envoltório macio a 80 ....^.{,80}\b
faria por pessoas que usam guias suaves / expandidas. Note que é perl regex, não vim regex.Não existe uma boa maneira de fazer isso. Podemos cortar um improvisado
setlocal softwrap
comautocmd
se modificar @eborisch resposta. Se redimensionamos toda vez que inserimos um buffer, e redimensionamos para um comprimento específico quando a variável localsoftwrap
é definida, obtemos o comportamento desejado.Vamos supor que queremos envoltório macio para 80 colunas, podemos escrever o seguinte no
.vimrc
.Para ativar o modo para um buffer específico, use os seguintes comandos:
fonte