而在插入模式在Vim,有任何方法来遍历文本移动一些字符向前和向后除了使用方向键?

如果我在插入模式下按下h, j, k和l,实际字符将打印在屏幕上,而不是在文本中移动。

我现在这样做的方式是不得不诉诸Ctrl + [(Esc)和遍历文本;但很明显,这是没有成效的。


当前回答

抱歉,vim不是这样工作的。

你应该切换到“正常”模式,导航,然后返回插入。

其他回答

在GVim中,您可以使用鼠标。但说实话,使用方向键有什么错呢?它们在键盘上是有原因的。

在插入模式下,使用CtrlO切换到正常模式,只执行一个命令:

CTRL-O h  move cursor left 
CTRL-O l  move cursor right
CTRL-O j  move cursor down
CTRL-O k  move cursor up

这可能是做你想做的事情的最简单的方法,也很容易记住。

插入模式中其他非常有用的控制键:

CTRL-W    delete word to the left of cursor
CTRL-O D  delete everything to the right of cursor
CTRL-U    delete everything to the left of cursor
CTRL-H    backspace/delete
CTRL-J    insert newline (easier than reaching for the return key)
CTRL-T    indent current line
CTRL-D    un-indent current line

这将消除许多浪费的开关回到正常模式。

Vim社区的许多人认为不应该在插入模式下导航,因为这不是Vim的方式。我认为这是在从标准编辑器过渡到Vim时学到的错误观点。

当您使用Vim的工具创建原子的、可重复的操作或查找时,Vim是最强大的。

如果您正在修复在同一插入会话中所犯的错误,则可以在插入模式下导航。您不应该在您修改的文本范围之外导航。

如果您在输入文本时出错,并退出插入模式来修复它,您将无法重复预期的操作。将重复修正。

Vim支持许多插入模式导航键。显然有方向键、Home键和结束键,但还有许多其他快捷键。参见:h ins-special-keys。

可以使用imap将插入模式下的任何键映射到其中一个游标键。像这样:

imap h <Left>

现在h的工作就像在正常模式下一样,移动光标。(以这种方式映射h显然是一个糟糕的选择)

话虽如此,我并不认为使用VIM在文本中移动的标准方式是“低效的”。在普通模式下有很多非常强大的遍历文本的方法(比如使用w和b,或/和?,或f和f,等等)。

抱歉,vim不是这样工作的。

你应该切换到“正常”模式,导航,然后返回插入。