在光标前插入space,然后将光标移动到Vim中新增的space前

Insert space before the cursor, then move cursor before the newly added space in Vim

我正在寻找一种更简单的方法来执行我在 Vim 中使用的常用编辑模式。

给定以下代码...

我想在现有条件 之前 的 if 子句中添加一个新条件,如下所示:

我目前的做法是...

  1. 从普通模式开始,我将块光标移动到左括号后的第一个字母"r":

  2. 然后我按 i 进入插入模式,将插入光标放在左括号和字母 "r" 之间。

  3. 然后我按下 Space 栏,它在左括号和字母 "r":

    之间插入一个空白 space

  4. 然后我按一次键把光标移动到新添加的space.

    [=81之前=]
  5. 然后我愉快地输入新条件 site == "HQ" &&


问题

每当我必须在两边都没有白色 space 的位置添加文本时,我必须通过这种编辑模式。为什么?因为我发现用空白 space 将我要添加的新文本与右侧的现有文本分开会更容易。

例如,如果我在上面的第 2 步之后开始添加新的 "if" 条件(没有空格 space 分隔),那么在我键入时,它看起来像这样:

当我打字时,单词像这样混在一起是令人不安的,而且通常会让我失望。如果我最初添加空白 space(如上述步骤),那么当我输入新信息时,我很少会对我正在查看的内容感到困惑:

但在上面的第 4 步中,为了够到 键,我不得不将右手从 "home position" 移开,这对我来说几乎同样烦人;或者,类似地,退出插入模式并重新进入插入模式以将光标移至新添加的 space.

左侧再次开始键入

总结

我想开始打字的好处是在插入光标的右侧有一个空白 space,而之前两边都没有空白 space光标。

有没有更简单的方法来完成我想用更少(或更简单)的击键或使用现有的 Vim 命令来完成的事情?

完成你想要的一种方法是创建一个进入插入模式并自动添加 space 的键映射:

nnoremap {key} i<space><esc>i

您可以为 {key} 使用任何您想要的,因为我不知道什么最适合您的 vim 配置。您可以使用的另一个映射是:

inoremap {key} <space><left>

{key} 最好是 Ctrl- 映射。

看来您有多种选择:

  1. 按照 vim 的方式进行:i <esc>i。将 esc 映射到像 caps lock 这样易于按下的东西使得它非常无痛
  2. 在 Vim 或系统范围内将类似 alt-h 的内容映射到 ←。与上面相比节省了一次击键
  3. nnoremap <c-n> i <esc>iinoremap <c-b> <space><left>
  4. 这样的自定义映射