在Vim中,在正常模式下使用hjkl会很不错,并且可以继续在插入模式下使用它们。我试图将它们映射到Ctrl-h,Ctrl-j,Ctrl-k,Ctrl-l:
imap <C-h> <left>
imap <C-j> <down>
imap <C-k> <up>
imap <C-l> <right>
但它不方便,特别是因为它掩盖了Ctrl-H并且退格停止响应。 你有没有能够以某种方式使用HJKL键进行插入模式的移动?
答案 0 :(得分:5)
我在插入模式下使用双大写映射进行各种映射。这很有效,除非你从某个地方粘贴文本。在插入文本之前清除所有插入映射通常更明智。
所以你可以试试
imap HH <left>
imap JJ <down>
等...
显然,你需要两次击键作为正常动作,所以我想如果你需要“远离”导航,最好回到导航模式。
答案 1 :(得分:3)
我已将普通模式箭头键映射到“气泡”文字。这对于以最小的努力移动代码块或文本块非常有用。
" Useful bubble text normal mapping for arrow keys.
nnoremap <UP> ddkP
nnoremap <DOWN> ddp
vnoremap <DOWN> xp`[V`]
vnoremap <UP> xkP`[V`]
绝对受到Drew Neil在Bubbling Text上VimCasts.org的剧集的启发。
答案 2 :(得分:2)
请原谅我这样说,但让他们像普通模式一样工作会有多大帮助。我的意思是,你会用什么来输入hjkl呢?
但是,如果您真的想要映射它们,请务必使用<imap> <something-h> <some operation>
映射它们,然后离开。
虽然我认为没有意义。如果你想把手放在键盘中间,为什么不把jj映射到<Esc>
(有些人更喜欢这样,所以他们不必将手指从主行移开)。
答案 3 :(得分:0)
我试图这样做。我在以下链接中找到了答案:Traversing text in Insert mode。
由于某些原因我还不知道,插入模式下的Ctrl绑定对我来说并不起作用。一种替代方法是按Ctrl-O切换到一个命令的正常模式,因此<C-o>h
,<C-o>j
,<C-o>k
,<C-o>l
可让您在插入模式下四处移动。或者,我使用了以下映射,因为我发现它比按<C-o>
加上h,j,k,l更短:
inoremap h<Tab> <Left>
inoremap j<Tab> <Down>
inoremap k<Tab> <Up>
inoremap l<Tab> <Right>