为什么我问:
我用以输入代码if(condition){}
,代码如下:
if(){
}
()
以完成条件{}
以添加任务我已阅读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 ,两者都有效。
更新:2016年11月2日
然而,我发现了一件有趣的事情,当我在Linux中时,除了 Alt + h 之外,所有上述映射都可以,因为它与ubuntu当前冲突打开窗口帮助菜单。当我通过MobaXerm
应用程序使用ssh时,我只遇到了我的问题。
答案 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 - 在上面的新行中开始插入模式