¿Cómo trato con líneas muy largas en el texto (más de 500 caracteres)?

19

Para algunos formatos de texto, los saltos de línea son importantes.

Por ejemplo, a menudo uso Vim para escribir documentos de MediaWiki, donde no puedes poner un salto de línea en cualquier lugar (a diferencia de Markdown). Así que me veo obligado a escribir líneas con muchos personajes.

Esto puede conducir a líneas largas (más de 200 caracteres) o incluso muy largas (más de 1000 caracteres). Encuentro esto muy incómodo de usar en Vim. Un ejemplo es si quiero editar algo en el medio de la línea de 1000 caracteres, necesito mover mi cursor 500 veces.

Esto se puede hacer un poco más rápido con wo /, pero aún es incómodo.

¿Hay mejores formas de lidiar con esto? ¿Mejores teclas de movimiento? ¿Algún tipo de "envoltura falsa" (el texto se comporta como si tw=80, pero no \nen el archivo), o algo más?

Martin Tournoij
fuente
1
Es posible que también desee establecer display = lastline para evitar líneas @ en blanco al final de la pantalla.
Random832

Respuestas:

21

Puede usar gseries de comandos para moverse a los límites del área de pantalla visible. Por ejemplo, se g$mueve al borde derecho de la pantalla (que no es necesariamente el final de la línea). gjmueve el cursor una línea hacia abajo como aparece en la pantalla (que no es necesariamente una línea lógica hacia abajo).

Quizás podría volver a vincular las teclas de flecha:

nnoremap <Up> gk
nnoremap <Down> gj

O algunas personas también se vuelven a unir directamente ky j:

nnoremap k gk
nnoremap j gj

Para el modo de inserción, puede usar:

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

O:

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

Además, si usa :set wrap, Vim ajustará las líneas, para que pueda ver toda la línea. También puede usar set showsbreak=+para mostrar a +para indicar que Vim está haciendo el ajuste.


Para saltar a posiciones de columna específicas, puede usar el |comando. Por ejemplo, 200|irá a la posición de columna 200.

200_success
fuente
1
... y g5jsaltar 5 abajo, como siempre.
yo '
1
@yo 'Creo que te refieres5gj
Martin Tournoij
1
@Carpetsmoker Strange; con la mayoría de los comandos, no importa en qué orden asigne los prefijos y los números, siempre que el comando sea el último. Aquí no: - /
yo '
@yo ', bueno, en g5j, g5se ve primero, lo que salta al siguiente 5antes de aplicar el j. Por eso no puede hacer lo que 5gjhace.
Shahbaz
3

Vim tiene soporte para envoltura suave, solo set wrappara habilitarlo y envolverá largas líneas que van más allá de la pantalla visible. Puede usar gj& gkpara moverse hacia arriba / abajo, respectivamente, sobre dichas líneas ajustadas.

Dhruva Sagar
fuente
2

Cuando estoy tratando con líneas muy largas, el mayor punto de dolor tiene que ver con diferentes longitudes de línea. Es decir, moverse hacia arriba o hacia abajo cerca de los extremos de las líneas desplaza la ventana muy a la izquierda o derecha.

Esto puede evitarse mediante la configuración virtualedit=all, que le permite mover el cursor al espacio mucho después de que finalice la línea.

superjer
fuente
1

Como otros han dicho, puedes usar g+ algo para moverte. Sin embargo, cuando tiene líneas extremadamente largas, presionar gjvarias veces para moverse hacia abajo no es ergonómico. Tengo lo siguiente en mi .vimrcpara hacerlo mucho más 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^

En una Mac, esto me permite usar j, k, $, 0 y ^ en las líneas de visualización manteniendo presionada la tecla de comando. En otros sistemas, en lugar de Dque se trate Mo Apara Alt o Cde control.

janos
fuente