(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
j
move o cursor um para baixolinha física. Você pode usar gj
para descer umlinha exibida.
Responder2
As respostas existentes estão corretas.
Queria acrescentar que j
/ k
e gj
/ gk
sã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