¿Cómo se avanza dentro de una sola línea envuelta en vim?

¿Cómo se avanza dentro de una sola línea envuelta en vim?

Captura de pantalla
(Haga clic en la imagen para ampliar)

Mire la imagen de arriba, es una línea que declara una lista enorme. Ahora supongamos que mi cursor está en el primer elemento 'i'y presiono 'j', luego el cursor va directamente a la línea, new_s=''pero lo que quiero es que el cursor vaya a la 's' de la palabra 'she'a continuación.'i'

¿Hay alguna manera de hacer esto?

Respuesta1

jmueve el cursor hacia abajo unalinea fisica. Puedes usar gjpara bajar unolínea mostrada.

Respuesta2

Las respuestas existentes son acertadas.

Quería agregar que j/ ky gj/ gkson estrictamente equivalentes cuando se trabaja con texto no ajustado. Por lo tanto, las siguientes asignaciones son tan inofensivas (si no lo hace :set wrap) como útiles (si lo hace :set wrap):

nnoremap j gj
nnoremap k gk

Respuesta3

Me gusta el guión de aquí: http://vim.wikia.com/wiki/Move_cursor_by_display_lines_when_wrapping "Mapeo para hacer que los movimientos operen en 1 línea de pantalla en modo ajustado

¡función! ScreenMovement(movimiento)
  if &wrap && b:gmove == 'yes'
    devuelve "g" . a:movimiento
  else
    return a:movimiento
  endif
función final
onoremap j ScreenMovement("j")
onoremap k ScreenMovement("k")
onoremap 0 ScreenMovement("0")
onoremap ^ ScreenMovement("^")
onoremap $ ScreenMovement("$")
nnoremap j ScreenMovement("j")
nnoremap k ScreenMovement("k")
nnoremap 0 ScreenMovement("0")
nnoremap ^ ScreenMovement("^")
nnoremap $ ScreenMovement("$")
vnoremap j ScreenMovement("j")
vnoremap k ScreenMovement("k")
vnoremap 0 ScreenMovement("0")
vnoremap ^ ScreenMovement("^")
vnoremap $ ScreenMovement("$")
vnoremap j ScreenMovement("j")
" alternar
función showbreak! TYShowBreak()
  if &showbreak == ''
    set showbreak=>
  else
    set showbreak=
  endif
endfunction
let b:gmove = "yes"
function! TYToggleBreakMove()
  if existe("b:gmove") && b:gmove == "yes"
    let b:gmove = "no "
  más
    let b:gmove = "yes"
  endif
endfunction
nmap ,b TYShowBreak()
nmap ,bb TYToggleBreakMove()

Luego puede usar ,b para mostrar si la línea se ajusta (el ejemplo anterior usa el carácter '>'). Luego, bb desactiva el movimiento de la pantalla si tiene configurado el ajuste.

Además, también tengo un ajuste configurado en un enlace en mi VIMRC:

"--- wrap toggle with f2 key---"
function! ToggleWrap()
set wrap!|set wrap?
endfunction

"F2 toggles wrap
nmap <f2> :call ToggleWrap()<CR>
vmap <F2> <C-C>:call ToggleWrap()<CR>
imap <F2> <C-O>:call ToggleWrap()<CR>i

Respuesta4

Si escribe gj, el cursor se moverá una línea hacia abajo, gk lo llevará una línea hacia arriba. ¿Supongo que estás en una ventana de consola normal?

Salud

información relacionada