hjkl
。我使用
Vim hardmode
插件禁用了导航键。我习惯了快速导航,但是事实证明插入时导航模式突然变得不可能。
对此有解决方案吗? (退出插入模式不是解决方案)。
#1 楼
您有很多选择。一种选择,而IMO最简便的选择就是停止禁用箭头键。我了解为什么许多硬派的vimmer会说诸如之类的话,所以永远不要再使用箭头键!每次使用箭头键,都浪费了3分钟的时间,一只小狗死了,有人切换到了Emacs!
(显然我是在开玩笑)但是,箭头键是有目的的。它们对于导航非常有用:
在插入模式下
在命令行中
通常,当人们告诉您不要使用箭头键时,这是因为他们希望您以更像Vim的方式重新学习导航。如果您对
hjkl
感到满意,并且大多数情况下在插入模式下使用箭头键,则没有充分的理由强迫自己不要使用它们。这很不错,因为您可以停留在家中,并且非常适合您在正常模式下使用ctrl-hjkl
学习到的肌肉记忆。实际上,这就是我要做的。这种方法的主要缺点是,在终端vim中设置可能会很麻烦,因为hjkl
会产生一个<C-j>
字节。我使用Gvim解决了这个问题。我不知道是否有一个简单的控制台vim修复程序。选项#3是使用
NUL
进行小的正常模式移动。例如,如果您键入Hello world!
cursor^
,但您发现自己忘记了逗号,而不是用leftleftleftleftleftleft代替,则可以简单地执行
<C-o>
或<C-o>b<C-o>h
,或任意其他喜欢的正常模式运动组合。当然,另一种方法,我非常喜欢的一种方法是只使用Esc,在返回插入模式之前进行一些小动作。您提到您不愿意这样做,但是有时候这确实是最有效的方法。
也可能还有其他方法,但是我喜欢这些对我有用的方法。
评论
有趣-我注意到您使用
–凯尔·斯特兰德(Kyle Strand)
16年11月16日在0:42
@kylestrand gk和gj可视地在一行中上下移动,即使该行被包裹了。
–詹姆斯
16年11月16日在0:44
我认为这不足以单独提供答案,但是我喜欢在正常模式下(这迫使我学习HJKL)禁用箭头键,并在所有其他模式下启用(noremap
–伊泰·费伯(Itai Ferber)
16年11月16日1:00
顺便说一句,BASH等人支持vi键绑定。使用这些映射,您可以
–罗夫
16-11-23在8:34
#2 楼
我喜欢使用Control键将hjkl
移动键转换为“通用”移动键。这是我的.vimrc
的相关位:" In insert or command mode, move normally by using Ctrl
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
cnoremap <C-h> <Left>
cnoremap <C-j> <Down>
cnoremap <C-k> <Up>
cnoremap <C-l> <Right>
inoremap
语句适用于插入模式,而cnoremap
语句适用于命令模式。 (我一直在使用这种映射,以至于我忘记了没有它,是否有任何方法可以浏览命令模式历史。)(编辑:我看到另一个答案已经提到了这种可能性。不过,查看实际的映射命令可能会有所帮助。)
#3 楼
按esc,然后使用hjkl和wWbB以及您要进行的其他任何导航。困难模式的全部目的是让您学习如何以更复杂的vim运动进行导航。进行少量编辑,然后使用常规模式移至新位置。如果您不想学习如何在启用硬模式的情况下更快地导航,请查看关于同一主题的另一个问题的答案。
#4 楼
如果您只需要修改少量文本或单词,则可以使用<Ctrl-O>h/j/k/l
。如果您需要进入普通模式以进行较小的移动,则可以节省一些按键操作。Ref:
1。 http://vim.wikia.com/wiki/Use_Ctrl-O_instead_of_Esc_in_insert_mode_mappings
#5 楼
如果要移动一个或两个以上的位置......最好的选择是按
ESC
,四处移动,然后再次回到插入模式。创建映射没有意义就像
<C-h>
向左移动然后开始多次敲击一样...作为vim用户,您不应多次敲击同一键来实现智能移动。(如果
ESC
键不是如果要在插入模式下移动一个或两个位置,
...一个不错的选择是使用
<Leader>
键定义一些动作:(我将
,
用作<Leader>
键,因为它感觉很贴近我的手指)noremap! <Leader>h <left> "move cursor left
noremap! <Leader>j <down> "move cursor down
noremap! <Leader>k <up> "move cursor up
noremap! <Leader>l <right> "move cursor right
noremap! <Leader>w <esc>wi "move one word forward
noremap! <Leader>e <esc>ei "move forward to the end of word
noremap! <Leader>b <esc>bi "move one word backward
评论
是的:使用箭头键:-)这就是它们的用途;-)@Carpetsmoker如果有方向键,我会用它们代替hjkl ....
但想法是,退出插入模式(即,仅将其用于其含义,即,将小插入插入其他命令)才是解决方案。如果我没记错的话,我会在帮助中看到它,如果找到链接,我会发布它。似乎您已经习惯了太多,而不是按箭头键。
您可以将键盘绑定为使用箭头作为快捷键,例如 super + j 向下移动。 super 可以是任何按钮,例如 Caps Lock 很常见