vim 删除 lambda 变量并阻止

vim delete lambda variable and block

我首先有光标 t,我想删除从 t};\n 的所有代码,而不计算行数。

如何实现?有没有比 d/};[ 更干净的方法=21=]$/e?

tabControl.PropertyChanged += (s, e) =>
{
    ...
};

如果重要的话,这是 C#。

这是一种通过 3 个步骤获得所需输出的更简洁的方法:

1。先在普通模式下点击dd删除第一行:

tabControl.PropertyChanged += (s, e) =>

因此,下一行将在光标所在的位置上移

{

注意光标必须放在开头 { 这样您就可以使用 % 命令,正如您将在第 2 步中看到的那样

2。输入Shift+v%(对于selection) 因此您可以确定确切的块 {} 将 selected

{
    ...
};

注意:是V大写)不是v 两个命令有区别

v Start Visual mode per character.

V Start Visual mode linewise.

3。然后键入 d :删除 selected 块

所以序列将是 dd Shift+v %d

您还可以通过在命令行中键入

查看帮助以了解 % 的实际作用
:help %

% : Find the next item in this line after or under the cursor and jump to its match. |inclusive| motion. Items can be: ([{}]) parenthesis or (curly/square) brackets

我试图在一些有用的命令下划线,但如果您确切理解 V%你可以 select 直接删除或修改整个块吗

最快的方法可能是 Vj%d,但请参阅下文了解适用于许多情况的较短选项。

  • V = 输入 Visual line mode.
  • j = 向下一个字符。
  • % = 转到匹配的大括号。
  • d = 删除选择。

或者,如果 lambda 中没有空行,但后面有一个空行,我会使用 d}} 转到 'end of paragraph',这通常表示下一个空行)或 dap(neumonic:'delete all paragraph',可以在 'paragraph' 中的任何地方工作,假设您的函数前后都有空行)。 dap 对于删除短代码块非常有用。

另请注意,如果存在由 }; 终止的嵌套 lambda,您的解决方案将不起作用。