在VIM插入模式下,您将哪些键映射<left>,<down>,<up>,<right>命令?</right> </up> </down> </left>

时间:2010-08-21 16:50:45

标签: vim

在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键进行插入模式的移动?

4 个答案:

答案 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 TextVimCasts.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>