vim에서 단어로 묶인 한 줄 내에서 어떻게 위로 이동합니까?

vim에서 단어로 묶인 한 줄 내에서 어떻게 위로 이동합니까?

스크린샷
(확대하려면 이미지를 클릭하세요)

위의 이미지를 보면 거대한 목록을 선언하는 한 줄입니다. 이제 커서가 첫 번째 요소에 있고 'i''j'를 누른 다음 커서가 바로 줄로 이동 new_s=''하지만 내가 원하는 것은 커서가 'she'아래 단어의 's'로 이동하는 것입니다.'i'

이를 수행할 수 있는 방법이 있습니까?

답변1

j커서를 한 단계 아래로 이동물리적 라인. gj한 단계 아래로 이동하는 데 사용할 수 있습니다 .표시된 줄.

답변2

기존 답변이 정확합니다.

줄 바꿈되지 않은 텍스트를 작업할 때 j/ kgj/ 는 엄격히 동일하다는 점을 추가하고 싶었습니다 . gk따라서 다음 매핑은 :set wrap유용하지만(사용하지 않는 경우) 무해합니다(사용하지 않는 경우 :set wrap).

nnoremap j gj
nnoremap k gk

답변3

나는 여기의 스크립트를 좋아합니다. http://vim.wikia.com/wiki/Move_cursor_by_display_lines_when_wrapping " 랩 모드에서 1 화면 라인에 움직임이 동작하도록 매핑

기능! ScreenMovement(movement)
  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")
" showbreak
기능을 전환합니다! TYShowBreak()
  if &showbreak == ''
    set showbreak=>
  else
    set showbreak=
  endif
endfunction
let b:gmove = "yes"
함수! TYToggleBreakMove()
  if presents("b:gmove") && b:gmove == "yes"
    let b:gmove = "no "
  else
    let b:gmove = "yes"
  endif
endfunction
nmap ,b TYShowBreak()
nmap ,bb TYToggleBreakMove()

그런 다음 ,b를 사용하여 줄 바꿈 여부를 표시할 수 있습니다(위의 예에서는 '>' 문자를 사용함). 그런 다음 bb는 랩 세트가 있는 경우 화면 이동을 끕니다.

또한 내 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

답변4

gj를 입력하면 커서가 한 줄 아래로 이동하고 gk는 한 줄 위로 이동합니다. 일반 콘솔 창에 있다고 가정합니까?

건배

관련 정보