vim快捷方式,在不离开插入模式的情况下向右移动一个位

时间:2017-01-03 11:19:28

标签: vim editor

我真的很喜欢不需要离开打字位置并使用vim完成所有操作的想法。但是我发现自己有点必须在某些点使用右箭头。

if (boolean)

我经常发现自己这样做,在完成括号内的表达后,我必须<Esc>la移动到行尾或<right arrow><shift><4>a

是否有任何技巧可以在插入模式下执行与右箭头相同的操作而无需移动那么远?

我正在考虑将该组合映射到capslock。但是有更优雅的方式吗?

4 个答案:

答案 0 :(得分:1)

您可以在插入模式下使用 CTRL + O 来运行任何正常模式命令,然后您将再次返回插入模式。

对于向上和向下箭头键,它们在插入模式下已经有默认快捷键:

向上 CTRL + G K

向下 CTRL + G J

答案 1 :(得分:1)

我在我的vimrc中有这个:

inoremap <c-l> <esc>%%a

它将您带到当前括号对的右侧,并保持插入模式。

foo(bar(bla(whateverI)))  "I is cursor, type Ctrl-l
foo(bar(bla(whatever)I))  

答案 2 :(得分:1)

我使用auto-pairs plugin

除了所有对的好东西之外,点击关闭对会将光标移动到它之后:

-(void)spriteKitEx
{
    sceneView = [[SCNView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 200)];
    sceneView.playing = true ;
    sceneView.allowsCameraControl = true ;
    scene = [SCNScene sceneNamed:@"realship.obj"];

    //Try to change color here using Scenlight
    SCNLight *light =[[SCNLight alloc] init];
    light.type = SCNLightTypeAmbient;
    light.color = [UIColor redColor];

    SCNNode *lightNode = [[SCNNode alloc] init];
    lightNode.light = light ;
     lightNode.scale = SCNVector3Make(1.0, 500.0, 2.0);
    [scene.rootNode addChildNode:lightNode];
    sceneView.scene = scene;
    [sceneView setBackgroundColor: [UIColor redColor]];

    [self.view addSubview:sceneView];
}

答案 3 :(得分:1)

大多数包围插件提供了一种方式(/ s)来移动到下一个右括号字符的结尾。通常,点击)就足够了。一些旧插件过去常常使用CTRL+J独立于括号对。

如果您使用包围式插件,请阅读文档。如果您使用填充控制语句的代码段插件,它还应该提供一种直接跳转到下一个占位符的方法(此处,与if相关联的操作),如果正确定义了代码段。大多数插件使用tab,默认情况下使用<c-j><M_del>

如果你有缩写插入你的控制语句,那么,你错过了我们在十多年前在更多进化插件中定义的东西。自动平衡括号可以避免愚蠢的错误,但是如果没有办法在结束括号之后,它实际上是一个适得其反的PITA。

PS:BTW,有时键盘的效率要求我们使用它的全部功能,即我们有等待使用的箭头键。