答案1
j
將遊標向下移動一位物理線。您可以使用gj
向下移動一位顯示行。
答案2
現有的答案是正確的。
我想補充一點,當您處理非換行文字時,j
/k
和gj
/是嚴格等效的。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'
回傳 "g" 。 a:movement
else
return a:movement
endif
endfunction
onoremap j ScreenMovement("j")
onoremap k ScreenMovement("k")
onoremap 0 ScreenMovement("0")
onoremap ^ ScreenMovement("^")
onoremap $"Movement"
nnoremap j ScreenMovement("j")
nnoremap k ScreenMovement("k")
nnoremap 0 ScreenMovement("0")
nnoremap ^ ScreenMovement("^") nnoremap $ ScreenMovement("
$") vnoremap ScreenMovenorment( ScreenMovement("k") vnoremap 0 ScreenMovement("0") vnoremap ^ ScreenMovement("^") vnoremap $ ScreenMovement("$") vnoremap j ScreenMovement("j") " 切換 showbreak 函數!TYShowBreakbreak() if &how == '' set showbreak=> else set showbreak= endif endfunction let b:gmove = "yes " ! 功能 else let b:gmove = "yes" endif endfunction nmap ,b TYShowBreak() nmap ,bb TYToggleBreakM)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 會將您向上移動一行。我假設您處於正常的控制台視窗中?
乾杯