Como você sobe em uma única linha quebrada no vim?

Como você sobe em uma única linha quebrada no vim?

Captura de tela
(Clique na imagem para ampliar)

Veja a imagem acima, é uma linha que declara uma lista enorme. Agora suponha que meu cursor esteja no primeiro elemento 'i'e eu pressiono 'j' então o cursor vai diretamente para a linha, new_s=''mas o que eu quero é que o cursor vá para o 's' da palavra 'she'abaixo'i'

Há alguma maneira de fazer isso?

Responder1

jmove o cursor um para baixolinha física. Você pode usar gjpara descer umlinha exibida.

Responder2

As respostas existentes estão corretas.

Queria acrescentar que j/ ke gj/ gksão estritamente equivalentes quando você está trabalhando em texto não quebrado. Assim, os seguintes mapeamentos são tão inofensivos (se você não fizer isso :set wrap) quanto úteis (se você não fizer isso :set wrap):

nnoremap j gj
nnoremap k gk

Responder3

Eu gosto do roteiro daqui: http://vim.wikia.com/wiki/Move_cursor_by_display_lines_when_wrapping "mapeamento para fazer os movimentos operarem em 1 linha da tela no modo wrap

função! ScreenMovement(movimento)
  if &wrap && b:gmove == 'yes'
    return "g" . a:movement
  else
    return a:movement
  endif
endfunction
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")
" alterna
a função showbreak! TYShowBreak()
  if &showbreak == ''
    set showbreak=>
  else
    set showbreak=
  endif
endfunction let b:     gmove = "   yes
"
function! "   else     let b:gmove = "yes"   endif endfunction nmap ,b TYShowBreak() nmap ,bb TYToggleBreakMove()








Você pode então usar ,b para exibir se a linha é quebrada (o exemplo acima usa o caractere '>'). Então, bb desativa o movimento da tela se você tiver definido o wrap

Além disso, também tenho o wrapper definido como uma ligação no meu 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

Responder4

Se você digitar gj o cursor se moverá uma linha para baixo, gk traz uma linha para cima. Presumo que você esteja em uma janela normal do console.

Saúde

informação relacionada