A única razão pela qual eu editaria um arquivo de texto no Pico ou Nano, e não no Vim, era o comando "Justificar" ^J. Ele reformatava um parágrafo do texto, criando quebras de linha em quebras de palavras para que o texto flutuasse bem na tela de largura fixa - formate o texto para caber em 80 colunas predefinidas, criando quebras de linha apenas entre as palavras. Por mais limitada que fosse a função, era muito útil formatar blocos de comentários longos, arquivos de documentação ou apenas substituir uma linha interminável de parâmetros por algo mais legível.
Posso fazer algo assim no Vim?
'formatprg'
opção.Há um ótimo VimCast neste tópico.
http://vimcasts.org/episodes/formatting-text-with-par/
Basicamente, você precisa instalar
par
:E então, como você deseja que as colunas sejam agrupadas em 80 colunas:
Agora você pode usar o
gq
operador, como em outras respostas (por exemplogqip
), e ele usará o Par em vez do formatador interno do Vim.O Par é bastante avançado e formatará comentários como este:
fonte
De
:help usr_25
:Então, tudo que você precisa fazer é executar
e então digite
para justificar o texto no arquivo inteiro.
(Obviamente, você também pode adicionar
ru macros/justify.vim
ao seu .vimrc para não precisar digitá-lo toda vez.)Nota : isso não adiciona quebras de linha para você. Você precisa adicioná-los manualmente com
gq
. Para isso, você também deve definirtextwidth
(o padrão é 0) para o valor desejado viae - se desejar - quebra automática de texto, definindo
t
-flag viaSe desejar, você pode definir um mapeamento no seu .vimrc para fazer a coisa toda por você:
Isso move para o início do arquivo (
gg
), quebra todas as linhas (gq
atéG
) e, em seguida,_j
usa o texto.fonte
:set fo+=a
opção muito útil para reformatação automática de todo o parágrafo. Dê uma olhada em:help fo-table
outras opções. Há também um bom tutorial em vídeo aqui ._j
mapeamento adicionado pela macro parece justificar o arquivo inteiro para mim ou pode ser limitado com uma seleção visual linha a linha.Enquanto a ajuda do nano chama o
^J
comando "Justify", na verdade, não justifica o texto, mas reformata o texto quebrando as linhas antes da margem direita da tela (ou em alguma coluna configurável, eu acho).Você pode fazer o mesmo no VIM configurando a variável
textwidth
, de:help 'textwidth'
:Ou seja: enquanto você digita, se uma linha for maior que
textwidth
caracteres, o VIM quebra a linha no primeiro espaço para manter o comprimento da linha menor ou igual atextwidth
.Para que isso funcione, a opção
formatoptions
deve conter a letrat
. Veja:help 'formatoptions'
e:help fo-table
para as opções disponíveis, por exemplo, você pode estar interessado nac
opção de fazer a formatação funcionar com comentários.Editar : você pode realizar a mesma operação, sem a necessidade de colocar
t
emformatoptions
, usando o comandogw{motion}
, ele formata o texto entre a posição atual do cursor e a posição do cursor depois{motion}
. Ogw
comando também está disponível no modo visual, formata o texto selecionado.fonte
Aqui estão duas opções fáceis:
!fmt
!}fmt
Ambos enviam um bloco de texto para o unix
fmt
, vejaman fmt
opções. Você pode passar argumentos de opção do vim. Por exemplo, para formatar um bloco com 50 caracteres, digite!}fmt -w 50
.fonte
:%!fmt
e desfazendo um único,u
se não gostar do resultado.Marque o texto usando o comando visual e use:
onde 40 é a largura da coluna e
j
significa justificar.fonte
par
) e por que sua solução funciona. Você pode adicionar mais detalhes para melhorar a qualidade de sua resposta e torná-la mais útil para futuros leitores.