Vim在插入模式下将光标移动一个字符而没有箭头键


9

这似乎有点过分,但是我切换到了vim,现在我对工作流程感到非常高兴。我试图约束自己不要使用箭头键,因为在写作时,始终将手放在阿尔法键上是一件大事。因此,当我需要导航时,退出插入模式,进入普通模式,然后回到插入模式。

有一个例外是,这实际上更具破坏性:我使用clang complete摘要,super tab这很棒。除非每次我填写完参数后都自动完成功能,否则)必须将光标向右移动一个字符才能继续。可以想象,这种情况经常发生。

据我所知,我唯一的选择是:Escla,我都不满意。第一个使我只需按一个简单的1个字符的光标即可击中3个键,第二个使我将手移至箭头键。第三种选择是将映射CTRL-L或覆盖到

那么最好的方法是什么?


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

//after completion:
foo(var1, var2|)
              ^ ^
              | |
     I am here  |
                 Need to be here

| 表示光标位置


遇到类似的问题,我结束了对完成脚本的黑客攻击,以使它)在函数中至少有一个参数的情况下不会回显关闭。所以我手动输入。现在更加有用。
德米特里·弗兰克

当您)打赌我打赌,它将跳过而没有实际插入会发生什么。(我不使用此插件)
FDinoff 2014年

@FDinoff不,它只是插入另一个)
bolov,2014年

1
@bolov令人失望。您可能能够从自动配对中提取执行此操作的代码。我不知道这些插件是否会冲突。另一个选项是用于<C-O>l退出1个正常模式命令的正常模式。
FDinoff 2014年

Answers:


5

映射)以跳过现有)圆括号(如果是右圆括号)

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

摘自:http : //vim.wikia.com/wiki/Automatically_append_closing_characters


旧答案

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

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

另外,有些括号插件允许您键入右括号),它们将覆盖现有的括号。


1
如果这)是行中的最后一个字符,则此方法不起作用(而且这通常在您编写代码时发生)。CTRL-O a但是有效。所以我想我们保存了一把钥匙。:)
bolov

True del )只有两个字符,将始终放在右括号后。
Brett Y

跳过')'就像魅力一样,谢谢
bolov

1

键入以下内容以找到在插入模式下使用的控制键。

:help insert-index

ctrl -b未使用,但是您可能要牺牲一些其他键。

imap <c-b> <right>

这样可以将光标向右移动一个字符。或映射一些双字符。

imap jj <right>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.