Vim 在插入模式下不使用箭头键将光标移动一个字符

Vim 在插入模式下不使用箭头键将光标移动一个字符

这可能看起来有点过分,但我换成了 vim,现在我对工作流程非常满意。我试着约束自己不使用箭头键,因为在写作时,一直把手放在阿尔法键上是一件大事。所以当我需要导航时,我会退出插入模式,进入正常模式,然后返回插入模式。

有一个例外,这实际上更令人不安:我使用clang complete片段,super tab这很好。但每次我填写参数后自动完成函数时,我的光标都停留在前面,)所以要继续,我必须将光标向右移动一个字符。你可以想象这种情况发生常常

据我所知,我仅有的选项是:Escla,我对它们都不满意。第一个选项让我按 3 个键来移动 1 个字符的光标,第二个选项让我将手移到箭头键上。第三个选项是将CTRL-L或 smth 映射到

那么,实现这一目标的最佳方法是什么?


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

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

|表示光标位置

答案1

如果是右括号,则映射)跳过现有内容)

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

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


旧答案

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

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

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

答案2

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

:help insert-index

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

imap <c-b> <right>

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

imap jj <right>

答案3

在插入模式下,用于ctrl-f向右移动一个字符。

这在我的 Mac 上通常有效。还有其他类似的命令可以使用ctrl,但它们可能并不总是有效。例如,ctrl-b在我的 vim 插入模式和我的 Mac 上,它会将您带回一个字符,除非我在编辑 stackoverflow 答案中的内容,在这种情况下,它会被映射到使文本加粗 :)

答案4

如果您正在使用登山扣元素,则可以通过下一个配置非常轻松地完成。

                    {
                        "description": "CRTL+j -> down_arrow",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "j",
                                    "modifiers": {
                                        "mandatory": [
                                            "left_control"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "down_arrow"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "CRTL+k -> up_arrow",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "k",
                                    "modifiers": {
                                        "mandatory": [
                                            "left_control"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "up_arrow"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "CRTL+h -> left_arrow",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "h",
                                    "modifiers": {
                                        "mandatory": [
                                            "left_control"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "left_arrow"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "CRTL+l -> right_arrow",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "l",
                                    "modifiers": {
                                        "mandatory": [
                                            "left_control"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "right_arrow"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },

对我来说,无论我在哪里使用 vim,在 vscodevim、ideavim 等还是终端 vim 中,它都是最好的。是的,不是最理想的,但运行完美,尤其是在 vim 模拟器的情况下

相关内容