如何在vim line模式下标记块的所有行?

时间:2017-02-23 11:26:30

标签: vim

我经常发现自己处于这种情况(光标位置标有^):

$a = [
    [
        'a' => 1,
        'b' => 2,^
    ],
    [
        'x' => 3,
    ];
];

我现在想要删除第一个内部[块,以便我得到:

$a = [
    [^
        'x' => 3,
    ];
];

这似乎微不足道,所以我的想法是:

  • 使用 V
  • 输入可视线模式
  • 使用 a [
  • 标记[ - 块中的所有行
  • 使用 d
  • 删除它

但这不起作用,因为 a [似乎总是隐瞒切换到视觉角色模式,好像我开始使用 v 而不是 V 。因此,结果是,

过多的行
$a = [
    ,^
    [
        'x' => 3,
    ];
];

这对我来说非常违反直觉。为什么Vim认为,当我明确要求线模式时,它比我聪明并且强制性格明智的视觉模式?什么是简单的(!!)方式来获得我想要的(相同数量或更少的击键)?

1 个答案:

答案 0 :(得分:3)

  

为什么Vim认为,当我明确要求线路模式时,它比我聪明并且强制性格明智的视觉模式?

因为文本对象在角色级别而不是行级别工作。

  

什么是简单的(!!)获得我想要的方式(相同数量或更少的击键次数)?

va]:d<CR>
va]Vd
va]ddd
:-2,+d<CR>

可能是其他人。如果你发现它很麻烦,可以将它映射到更容易的东西。