如何在 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'
    回傳 "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 會將您向上移動一行。我假設您處於正常的控制台視窗中?

乾杯

相關內容