Vim 在没有方向键的插入模式下将光标移动一个字符

bol*_*lov 11 vim

这似乎有点过分,但我切换到 vim 并且我现在对工作流程感到非常满意。我试着约束自己不要使用箭头键,因为在写作时一直把手放在 alfa 键上是一件很重要的事情。因此,当我需要导航时,我会退出插入模式,进入正常模式并返回插入模式。

有一个例外,这实际上更具破坏性:我使用clang complete片段,super tab这很棒。除了每次我在填写参数后自动完成一个功能时,我之前都会留下光标,)所以要继续,我必须将光标向右移动一个字符。可以想象,这种情况经常发生。

我唯一的选择(据我所知)是 :Escla?,我对它们都不满意。第一个让我只需简单的 1 个字符光标移动就可以按 3 个键,第二个让我将手移动到箭头键。第三种选择是映射CTRL-L或 smth 到?.

那么这样做的最佳方法是什么?


//snippets (clang complete + supertab):
foo($`param1`, $`param2`)

//after completion:
foo(var1, var2|)
              ^ ^
              | |
     I am here  |
                 Need to be here
Run Code Online (Sandbox Code Playgroud)

| 表示光标位置

Bre*_*t Y 6

如果它是))括号,则映射跳过现有的

inoremap <expr> )  strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : ")"
Run Code Online (Sandbox Code Playgroud)

取自:http : //vim.wikia.com/wiki/Automatically_append_closure_characters


旧答案

:h i_CTRL-O 执行一个命令,返回插入模式。

Ctrl-ol 将您向右移动一个字符,然后返回到插入模式。

或者,一些括号插件允许您只输入结束括号),它们将覆盖现有的。