Gosto que as longas filas sejam exibidas em mais de uma linha de terminal; Não gosto que o vim insira novas linhas no meu texto real. Qual parte do .vimrc devo mudar?
Para maior clareza: você gosta que as linhas longas sejam exibidas em mais de uma linha terminal; você não gosta que o vim insira novas linhas no seu texto real? Se sim, então :set nowrapé o oposto do que você deseja :(.
Andrew Aylett
@ Andrew: sim seu resumo é exatamente o que eu quero
Haiyuan Zhang
Respostas:
304
Usar
:set wrap
Para quebrar as linhas visualmente, ou seja, a linha ainda é uma linha de texto, mas o Vim a exibe em várias linhas.
Usar
:set nowrap
Para exibir linhas longas como apenas uma linha (ou seja, você precisa rolar horizontalmente para ver a linha inteira).
Obrigado pelas dicas, pessoal. Eu fui com: set nowrap e: set textwidth = 0 funciona muito bem
Robert Beltran
5
Quando digito, ainda quero ver o limite "visual" de 80 colunas e não quero que o vim adicione automaticamente o feed de linha quando digito após o 80º colomn. Como eu faço?
Olivier Pons
7
Esta é exatamente a resposta que eu estava procurando, mas não é a resposta para a pergunta do OP. É um pouco enganador ter isso como a resposta principal. Não sei como consertar essa situação. Gostaria apenas de editar sua resposta para também responder à pergunta original. Mas já existe uma resposta adequada que é quase tão votada. Então, apenas votei para mudar as duas respostas.
Daniel Darabos 8/03/16
3
Esta é exatamente a resposta que eu estava não procurando, e é não a resposta à pergunta do OP.
Peeol
Esta não é uma resposta para a pergunta.
194
Eu gosto que as longas filas sejam exibidas em mais de uma linha terminal
Esse tipo de quebra de linha visual / virtual é ativado com a wrapopção da janela:
set wrap
Não gosto que o vim insira novas linhas no meu texto real.
Para desativar a quebra automática de linha, limpe as opções textwidthe wrapmarginbuffer:
Obrigado! set textwidth=0 wrapmargin=0funciona, mas se eu colocá-lo .vimrc, ele não tem efeito, por exemplo, para arquivos de texto sem formatação. Como descubro e elimino a substituição?
qubodup
7
@qubodup Você pode testar se algo está sobrescrevendo sua configuração .vimrc, abrindo um arquivo em que você vê o problema e entra :verbose set textwidth? wrapmargin?. Isso informará seus valores atuais e também onde eles foram definidos. É possível que você tenha um plugin que os substitua. Nesse caso, você pode desinstalar esse plug-in ou tentar substituir a configuração do plug-in posteriormente no seu caminho de execução (por exemplo:) ~/.vim/afterou com seu próprio comando automático. A abordagem correta dependerá de onde / como está sendo redefinida.
Laurence Gonsalves
set wrape set linebreaké o que fez isso por mim.
Ilia Choly
36
Não sei se entendi completamente, mas você pode estar procurando a configuração 'formatoptions'. Tente algo parecido :set formatoptions-=t. A topção irá inserir quebras de linha para tornar o texto quebrado na largura definida por textwidth. Você também pode colocar este comando no seu .vimrc, basta remover os dois pontos ( :).
Essa me parece a melhor opção para atender ao desejo do OP. Gosto do fato de o vim ainda mostrar uma linha vertical em tw.
Mitchus
3
Esta é a única resposta que realmente aborda a questão do OP. A maioria dos outros faz o oposto. O OP ainda quer que as linhas longas sejam exibidas, mas para o vim não inserir quebras de linha automaticamente.
Só que ele faz o oposto do que os define OP como o comportamento queria ...: P
Morlock
5
@Morlock, mas responde à pergunta que eu tinha e Google levou-me aqui :)
Ben Usman
existe algum atalho de teclado para isso?
Pini Cheyni
@PiniCheyni, adicione ao seu arquivo .vimrc: nnoremap <Cw>: configure invwrap <CR> Em seguida, você pode usar Ctrl + W para alternar a quebra de texto.
Reas0n
30
:set tw=0
O VIM não insere automaticamente quebras de linha, mas mantém a quebra de linha.
Eu quero exatamente o oposto ... quando digito, ainda quero ver o limite "visual" de 80 colunas e não quero que o vim adicione automaticamente o feed de linha quando digito após a colônia 80. Como eu faço?
Olivier Pons
16
Você pode achar set lbrútil; com set wrapisso envolverá, mas apenas cortará a linha no espaço em branco e não no meio de uma palavra.
por exemplo
without lbr the li
ne can be split on
a word
e
with lbr on the
line will be
split on
whitespace only
É altamente recomendável evitar opções abreviadas, porque no futuro você terá que fazer uma pesquisa no sistema de ajuda para entender o que foi resolvido, então use-o em set nolinebreakvez deset lbr
SergioAraujo
12
set formatoptions-=t Mantém a largura do texto visual, mas não adiciona nova linha no modo de inserção.
É estranho que uma configuração tão simples exija essa quantidade de 'hocus-pocus' para funcionar.
Para responder sua pergunta agora, para mim parecia funcionar com a combinação do seguinte:
:set wrap linebreak nolist
(isso parece impedir a quebra das linhas existentes, basta quebrar.)
E
set formatoptions=l
(isso evita que linhas novas / editadas quebrem, enquanto + = não faz isso por mim, pois outras configurações / plugins parecem encontrar espaço e adicionar suas próprias opções que substituem as minhas.)
Se, como eu, você estiver executando o gVim no Windows, o arquivo .vimrc poderá estar fornecendo outro arquivo 'exemplo' do Vimscript que automaticamente define textwidth(no meu caso 78) para arquivos de texto.
textwidth=78
Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim
No vimrc_example.vim , encontrei as linhas relevantes:
" Only do this part when compiled with support for autocommands.
if has("autocmd")
...
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
...
E descobri que meu .vimrc está fornecendo esse arquivo:
source $VIMRUNTIME/vimrc_example.vim
No meu caso, não quero textwidthser definido para nenhum arquivo, então apenas comentei a linha relevante em vimrc_example.vim .
Em vez de editar o arquivo vimrc_example.vim, acabei de adicionar autocmd FileType text setlocal textwidth=0ao arquivo vimrc e isso corrigia o problema quando outras soluções propostas não o faziam.
GrandAdmiral 8/08/19
3
É correto que a configuração nowrap lhe permita colar em uma linha longa sem o vi / vim adicionar novas linhas, mas a linha não será visualizada automaticamente para facilitar a leitura. É apenas uma linha longa que você precisa percorrer.
Para que a linha seja quebrada visualmente, mas não tenha caracteres de nova linha inseridos, defina a quebra automática (que provavelmente é o padrão, portanto não é necessário definir) e defina a largura do texto = 0 .
Em alguns sistemas, a configuração de largura de texto = 0 é o padrão. Se não for esse o caso, adicione set textwidth = 0 ao seu arquivo .exrc para que ele se torne o padrão do usuário para todas as sessões do vi / vim.
:set nowrap
é o oposto do que você deseja :(.Respostas:
Usar
Para quebrar as linhas visualmente, ou seja, a linha ainda é uma linha de texto, mas o Vim a exibe em várias linhas.
Usar
Para exibir linhas longas como apenas uma linha (ou seja, você precisa rolar horizontalmente para ver a linha inteira).
fonte
Esse tipo de quebra de linha visual / virtual é ativado com a
wrap
opção da janela:Para desativar a quebra automática de linha, limpe as opções
textwidth
ewrapmargin
buffer:fonte
set textwidth=0 wrapmargin=0
funciona, mas se eu colocá-lo.vimrc
, ele não tem efeito, por exemplo, para arquivos de texto sem formatação. Como descubro e elimino a substituição?:verbose set textwidth? wrapmargin?
. Isso informará seus valores atuais e também onde eles foram definidos. É possível que você tenha um plugin que os substitua. Nesse caso, você pode desinstalar esse plug-in ou tentar substituir a configuração do plug-in posteriormente no seu caminho de execução (por exemplo:)~/.vim/after
ou com seu próprio comando automático. A abordagem correta dependerá de onde / como está sendo redefinida.set wrap
eset linebreak
é o que fez isso por mim.Não sei se entendi completamente, mas você pode estar procurando a configuração 'formatoptions'. Tente algo parecido
:set formatoptions-=t
. At
opção irá inserir quebras de linha para tornar o texto quebrado na largura definida portextwidth
. Você também pode colocar este comando no seu.vimrc
, basta remover os dois pontos (:
).fonte
tw
.Use
:set nowrap
.. funciona como um encanto!fonte
:set tw=0
O VIM não insere automaticamente quebras de linha, mas mantém a quebra de linha.
fonte
Você pode achar
set lbr
útil; comset wrap
isso envolverá, mas apenas cortará a linha no espaço em branco e não no meio de uma palavra.por exemplo
e
fonte
set nolinebreak
vez deset lbr
set formatoptions-=t
Mantém a largura do texto visual, mas não adiciona nova linha no modo de inserção.fonte
É estranho que uma configuração tão simples exija essa quantidade de 'hocus-pocus' para funcionar.
Para responder sua pergunta agora, para mim parecia funcionar com a combinação do seguinte:
(isso parece impedir a quebra das linhas existentes, basta quebrar.)
E
(isso evita que linhas novas / editadas quebrem, enquanto + = não faz isso por mim, pois outras configurações / plugins parecem encontrar espaço e adicionar suas próprias opções que substituem as minhas.)
fonte
Se, como eu, você estiver executando o gVim no Windows, o arquivo .vimrc poderá estar fornecendo outro arquivo 'exemplo' do Vimscript que automaticamente define
textwidth
(no meu caso78
) para arquivos de texto.Minha resposta a uma pergunta semelhante a esta - Como parar o texto do gVim na coluna 80 - no site do Vi e Vim Stack Exchange :
fonte
autocmd FileType text setlocal textwidth=0
ao arquivo vimrc e isso corrigia o problema quando outras soluções propostas não o faziam.É correto que a configuração nowrap lhe permita colar em uma linha longa sem o vi / vim adicionar novas linhas, mas a linha não será visualizada automaticamente para facilitar a leitura. É apenas uma linha longa que você precisa percorrer.
Para que a linha seja quebrada visualmente, mas não tenha caracteres de nova linha inseridos, defina a quebra automática (que provavelmente é o padrão, portanto não é necessário definir) e defina a largura do texto = 0 .
Em alguns sistemas, a configuração de largura de texto = 0 é o padrão. Se não for esse o caso, adicione set textwidth = 0 ao seu arquivo .exrc para que ele se torne o padrão do usuário para todas as sessões do vi / vim.
fonte