VIM在插入模式下移动

时间:2016-11-01 08:14:03

标签: vim

为什么我问:

我用以输入代码if(condition){},代码如下:

  1. if(){ }
  2. 将光标移回()以完成条件
  3. 将光标移至{}以添加任务
  4. 我已阅读Traversing text in Insert mode,并在我的$HOME/.vimrc

    中添加了以下代码
    " key mapping
    inoremap <A-h> <C-o>h
    inoremap <A-j> <C-o>j
    inoremap <A-k> <C-o>k
    inoremap <A-l> <C-o>l
    

    现在我可以使用 Alt + h Alt + l ,但剩下的两张新地图没有效果,然后我测试: Ctrl + o j Ctrl + o k ,两者都有效。

    1. 进行密钥映射时是否有错误?
    2. 如何检查我的新映射是否与其他映射冲突?
    3. 更新:2016年11月2日

      1. 我买了一个带光标键的新键盘......
      2. 安装auto pair
      3. 然而,我发现了一件有趣的事情,当我在Linux中时,除了 Alt + h 之外,所有上述映射都可以,因为它与ubuntu当前冲突打开窗口帮助菜单。当我通过MobaXerm应用程序使用ssh时,我只遇到了我的问题。

2 个答案:

答案 0 :(得分:4)

  

我已阅读Traversing text in Insert mode,并添加了以下代码   我的$ HOME / .vimrc

你应该仔细阅读accepted answer for that answer,特别是这部分:

  

正确的方式 Esc ,去你想去的地方   小修正,修复,返回并继续编辑。这很有效   因为Vim的动作比平常更多   前进/后退/上/下。在你了解更多这些之后,这将会   恰好提高了工作效率。

你借用映射的答案也提到了:

  

尽管Pavel Shved说过 - 它可能更多   建议习惯转义插入模式 - 这是一个示例集   在插入模式下快速导航的映射:( ...)

无论如何,如果你想了解 Alt + j Alt + k 的问题,您应首先确保映射仍在Vim中定义(它们可能已被擦除或覆盖)。您可以使用:imap列出它们;试试这些:

:imap <A-j>
:imap <A-k>

如果正确定义了映射,则每个映射都会列出其目标(例如:* <C-O>j)。在这种情况下,您应该检查Vim是否正确接收这些组合;尝试使用 Ctrl + V (或 Ctrl + Q 插入文本(插入模式),如果你将其映射为从剪贴板粘贴)和 Alt 组合。您可以在Vim FAQ "I am not able to create a mapping for the key. What is wrong?"获取更多详细信息。

修改

如果您的问题主要与右括号有关,那么还有其他几个选项,我认为这些选项更实用。我快速上网搜索返回以下内容:

答案 1 :(得分:0)

我也认为你误用了Vim。

我知道这个问题是关于其他事情的,但这里是关于你应该如何在vim中移动的想法。

你有3个步骤:
1.插入一些空循环/条件
2.插入条件
3.插入循环/条件的主体

这应该代表3个更改,每个更改通过离开插入模式分开。

要正确执行此操作,您可以执行步骤1,然后使用 Esc Ctrl + [(第二个)保持插入模式一个 - 也是vim默认 - 你不必伸手去拿逃生钥匙。)

然后您应该使用 h j k l <导航到要插入更改的位置/ kbd>并通过启动插入模式来跟随它。

有几种方法可以启动插入模式:

I - 在行的开头开始插入模式(在开头省略空格)
i - 在光标
之前开始插入模式 a - 在光标
后开始插入模式 A - 在行尾的开始插入模式
s - 更改光标下的符号(可与视觉模式组合)
c - 将文本从光标下方更改为您已指定移动的位置(例如,ce - 更改为单词的结尾,cl - 与&#34; s&#34相同;)<登记/> C - 改变从光标到行尾的所有内容
S - 更换整条线 o - 在下面的新行中开始插入模式
O - 在上面的新行中开始插入模式