Como lido com linhas muito longas em texto (mais de 500 caracteres)?

19

Para alguns formatos de texto, as quebras de linha são importantes.

Por exemplo, costumo usar o Vim para escrever documentos do MediaWiki, onde você não pode simplesmente colocar uma quebra de linha em qualquer lugar (ao contrário do Markdown). Então, sou forçado a escrever linhas com muitos caracteres.

Isso pode levar a linhas longas (mais de 200 caracteres) ou até muito longas (mais de 1000 caracteres). Acho isso muito estranho de usar no Vim. Um exemplo é: se eu quiser editar algo no meio da linha de 1000 caracteres, preciso mover o cursor 500 vezes.

Isso pode ser feito um pouco mais rápido com wou /, mas ainda é estranho.

Existem maneiras melhores de lidar com isso? Teclas de movimento melhores? Algum tipo de "invólucro falso" (o texto se comporta como se tw=80, mas não \nno arquivo), ou algo mais?

Martin Tournoij
fonte
1
Você também pode definir também display = lastline para evitar @ linhas em branco no final da tela.
Random832

Respostas:

21

Você pode usar uma gsérie de comandos para mover para os limites da área visível da tela. Por exemplo, g$move-se para a borda direita da tela (que não é necessariamente o fim da linha). gjmove o cursor para baixo uma linha, como aparece na tela (que não é necessariamente uma linha lógica para baixo).

Talvez você possa religar as teclas de seta:

nnoremap <Up> gk
nnoremap <Down> gj

Ou algumas pessoas também religam diretamente ke j:

nnoremap k gk
nnoremap j gj

Para o modo de inserção, você pode usar:

inoremap <C-k> <C-o>gk
inoremap <C-j> <C-o>gj

Ou:

inoremap <Up> <C-o>gk
inoremap <Down> <C-o>gj

Além disso, se você usar :set wrap, o Vim quebrará as linhas, para que você possa ver toda a linha. Você também pode usar set showsbreak=+para mostrar a +para indicar que o Vim está fazendo quebra automática.


Para pular para posições específicas da coluna, você pode usar o |comando Por exemplo, 200|irá para a posição da coluna 200.

200_success
fonte
1
... e g5jpular 5, como sempre.
yo '
1
@yo 'Eu acho que você quis dizer #5gj
Martin Tournoij
1
@Carpetsmoker Strange; na maioria dos comandos, não importa em qual ordem você deve fornecer os prefixos e os números, desde que o comando em si seja o último. Aqui não: - /
yo '
@yo', bem, no g5j, g5é visto pela primeira vez, que apenas salta para a próxima 5antes de aplicar a j. É por isso que não pode fazer o que 5gjfaz.
Shahbaz
3

O Vim tem suporte para empacotamento suave, apenas set wrappara habilitá-lo e envolverá longas filas que vão além da tela visível. Você pode usar gj& gkpara mover para cima / para baixo, respectivamente, sobre essas linhas quebradas.

Dhruva Sagar
fonte
2

Quando estou lidando com linhas muito longas, o maior ponto de dor tem a ver com diferentes comprimentos de linha. Ou seja, mover para cima ou para baixo perto do final das linhas rola a janela muito para a esquerda ou direita.

Isso pode ser evitado pela configuração virtualedit=all, que permite mover o cursor para o espaço muito depois das terminações da linha.

superjer
fonte
1

Como já foi dito, você pode usar g+ algo para se movimentar. No entanto, quando você tem linhas extremamente longas, pressionar gjvárias vezes para se mover para baixo não é ergonômico. Tenho o seguinte no meu .vimrcpara tornar isso muito mais fácil:

vmap <D-j> gj
vmap <D-k> gk
vmap <D-4> g$
vmap <D-6> g^
vmap <D-0> g^
nmap <D-j> gj
nmap <D-k> gk
nmap <D-4> g$
nmap <D-6> g^
nmap <D-0> g^

Em um Mac, isso permite que eu use j, k, $, 0 e ^ nas linhas de exibição mantendo pressionada a tecla de comando. Em outros sistemas, em vez de Dvocê pode tentar Mou Apara Alt ou Cpara Control.

janos
fonte