Eu estava lendo este post que descreve como embrulhar palavras inteiras no vim. A solução aceita foi esta:
:set formatoptions=l
:set lbr
O que leva este texto (as guias são mostradas como \ t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will wr|ap here
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Isso realiza um comportamento como este (as guias são mostradas como \ t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
No entanto, gostaria de redefinir essa função. Eu gostaria que a linha quebrada tivesse o mesmo número de abas na frente dela que a linha acima tem mais um. Ie:
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|\t\t\twrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Alguma ideia?
Respostas:
O patch breakindent tem o que você procura. Eu o apliquei com sucesso usando as instruções encontradas neste tópico:
Patch Vim com o patch breakindent no OS X com Homebrew
Especificamente, a fórmula Homebrew de echristopherson.
Eu sei que este tópico é antigo, mas é popular no google e me deparei com ele várias vezes ao tentar encontrar uma solução.
EDIT: Este patch agora está incluído no vim como patch 7.4.338. Veja: https://retracile.net/blog/2014/07/18/18.00
No Yosemite (Mac OS X), usei o comando snowbound com hombrew:
fonte
brew install macvim --with-features=huge --override-system-vim --HEAD
Isso não funcionou quando a pergunta foi feita originalmente, mas a partir de 25 de junho de 2014, funcionará. (Supondo que você atualize seu vim para uma versão mais recente do que essa data)
Adicione ao seu .vimrc:
E é isso!
-
Algumas pessoas (inclusive eu) compartilham um único .vimrc em vários computadores. Nesse caso, é importante que esta linha seja robusta (para evitar mensagens de erro irritantes). Isso é um pouco melhor:
Dessa forma, se você estiver em uma versão anterior do vim, não receberá uma mensagem de erro.
fonte
if has("patch-7.4.354")
O melhor que você vai conseguir é a
showbreak
opção que colocará uma corda fixa na frente de cada linha embrulhada (eu usoset showbreak=...
).fonte
:help 'showbreak'
, não, você não pode -showbreak
é apenas uma string.Eu concordo com a resposta que diz que 'showbreak' é a melhor opção. Showbreak normalmente não permite que você coloque caracteres não imprimíveis (por exemplo, espaços ou tabulações) na string showbreak, então, como normalmente usado, ele apenas fornecerá um indicador ao longo da margem esquerda, ou seja, nenhum recuo real. Isso não é ótimo, uma vez que o objetivo principal do OP, eu acho, é dar às linhas quebradas um recuo para evitar que amontoem a área da margem esquerda e pareçam linhas próprias.
Portanto, uma maneira de adicionar um recuo (feio) usando showbreak é usar vários caracteres, por exemplo, ": set showbreak => --------------->". Isso resulta em algo parecido com isto:
Uma alternativa melhor pode ser usar caracteres de espaço não separáveis (supondo que sua instância do Vim esteja habilitada para unicode), cada um dos quais pode ser inserido na string showbreak usando a sequência de teclas ctrl-v, 160. Dessa forma, você pode inserir uma string showbreak que está em branco no lado esquerdo e parece ser um recuo verdadeiro. Por exemplo, ": set showbreak =.......... >>" onde cada '.' no comando é na verdade um caractere de espaço não separável inserido pressionando ctrl-V, 160. Dessa forma, você acaba com um envoltório que é bem recuado, como este:
Você ainda não tem a capacidade de variar o nível de recuo de acordo com o recuo da linha anterior, mas pelo menos obtém um recuo limpo das linhas quebradas sem muita confusão visual ao longo da margem esquerda da janela. Ainda pode haver confusão se o recuo de uma linha quebrada for menor do que o início de uma linha real, mas isso talvez possa ser evitado tornando o "recuo" do showbreak bastante grande (ou seja, maior do que qualquer recuo comumente encontrado em seu código ), mas ainda pequeno o suficiente para fornecer espaço suficiente para uma quebra automática de texto legível. Para muitos usos, acho que um recuo showbreak de 40 ou 50 espaços faria isso muito bem.
fonte
:set showbreak=\ \ \ \
. Ainda não funciona para guias, no entanto.