突出顯示的文本是在其中我要移動的陣列。在按j鍵移動一行之前,我必須按g鍵。有沒有我的.vimrc映射,我可以使用hjkl移動屏幕線,而不是每次按g。
感謝您的幫助 馬蒂亞斯
突出顯示的文本是在其中我要移動的陣列。在按j鍵移動一行之前,我必須按g鍵。有沒有我的.vimrc映射,我可以使用hjkl移動屏幕線,而不是每次按g。
感謝您的幫助 馬蒂亞斯
我使用下面的代碼片段,它有助於所有形式的導航,包括像$到行尾等事情。
" mapping to make movements operate on 1 screen line in wrap mode
function! ScreenMovement(movement)
if &wrap
return "g" . a:movement
else
return a:movement
endif
endfunction
onoremap <silent> <expr> j ScreenMovement("j")
onoremap <silent> <expr> k ScreenMovement("k")
onoremap <silent> <expr> 0 ScreenMovement("0")
onoremap <silent> <expr>^ScreenMovement("^")
onoremap <silent> <expr> $ ScreenMovement("$")
nnoremap <silent> <expr> j ScreenMovement("j")
nnoremap <silent> <expr> k ScreenMovement("k")
nnoremap <silent> <expr> 0 ScreenMovement("0")
nnoremap <silent> <expr>^ScreenMovement("^")
nnoremap <silent> <expr> $ ScreenMovement("$")
您可以重新映射j
和k
鍵(不知道你是否真的需要h
和l
..)
:map j gj
:map k gk
一旦你嘗試和喜歡他們,加他們到你的.vimrc
沒有領先:
這有效,但不應該使用`:noremap`,這樣j不會遞歸映射?在這個例子中並不重要,但是進入... – naught101 2012-04-25 02:34:59
你可以簡單地重新映射j和k(例如)到gj和gk:
" map j to gj and k to gk, so line navigation ignores line wrap
nmap j gj
nmap k gk
這是編輯長文本文件(如乳膠文檔)時的好主意。但編輯代碼並不是一個好主意,因爲它可能會導致一些宏(就像Jelera在Ned的答案中所記錄的那樣)。我的妥協是,只有當它能夠在插入(和替換)模式,而不是爲別的(我不知道,我在插入模式下使用使用導航鍵任宏):
" move on soft lines in insert mode
inoremap <Down> <C-o>g<Down>
inoremap <Up> <C-o>g<Up>
(改編自this answer)
我使用VIM 7.2,並且我不需要每次都擊中g: -/ – Mikhail 2011-02-09 14:50:53
Mikhail,我有7.2和我需要。可能這是一個配置問題。例如,要查找是否已將j映射到一系列命令,可以鍵入「:map j」。 – 2011-02-09 14:54:47
我有VIM 7.2.33,我必須按下它們。 – 2011-02-09 14:56:33