Vim删除父括号并重新插入子括号

Vim删除父括号并重新插入子括号,vim,Vim,我试着从这里开始: const f = function() { if (exists) { // delete this const a = 'apple' } } 致: 删除和重新删除中间的所有内容的最快方法是什么?假设您的光标位于包含常量a的行上的某个位置 ?{^M%dd^Odd==(其中^M是按回车键,^O是按Ctrl+O键) 细分如下: ?{^M-向后/向上搜索开口大括号 %-跳转到相应的大括号(右大括号) dd-删除当前行 ^O-跳转到上一个位置(

我试着从这里开始:

const f = function() {
    if (exists) { // delete this 
        const a = 'apple'
    }
}
致:


删除和重新删除中间的所有内容的最快方法是什么?

假设您的光标位于包含常量a的行上的某个位置

?{^M%dd^Odd==
(其中
^M
是按回车键,
^O
是按Ctrl+O键)

细分如下:
?{^M
-向后/向上搜索开口大括号
%
-跳转到相应的大括号(右大括号)
dd
-删除当前行
^O
-跳转到上一个位置(左大括号)
dd
-删除该行
==
-缩进当前行

你不需要一个特殊的宏或函数或任何东西来完成这项任务,因为vim为你提供了所有强大的文本操作工具来完成这项任务。如果你发现自己经常这样做,那么如果你愿意,你可以将它映射到一个键组合

上面的方法只适用于大括号内的单行,但下面的方法适用于多行(同样假设您位于大括号内的某一行)


假设您的光标位于包含
常量a的行上的某个位置

?{^M%dd^Odd==
(其中
^M
是按回车键,
^O
是按Ctrl+O键)

细分如下:
?{^M
-向后/向上搜索开口大括号
%
-跳转到相应的大括号(右大括号)
dd
-删除当前行
^O
-跳转到上一个位置(左大括号)
dd
-删除该行
==
-缩进当前行

你不需要一个特殊的宏或函数或任何东西来完成这项任务,因为vim为你提供了所有强大的文本操作工具来完成这项任务。如果你发现自己经常这样做,那么如果你愿意,你可以将它映射到一个键组合

上面的方法只适用于大括号内的单行,但下面的方法适用于多行(同样假设您位于大括号内的某一行)


假设光标位于大括号内;任意数量的行和嵌套运算符;“else”-分支不受支持:

[{"_dd<]}']"_dd

[{”\u dd假设光标位于大括号内;不支持任何行数和嵌套运算符;“else”-分支:

[{"_dd<]}']"_dd

[{”\u dd所有答案都很好,而且,正如前面所指出的,您可以随时将这些键映射到快捷方式。如果您想尝试更通用的解决方案,可以查看我的“deleft”插件:

所有答案都很好,而且,正如前面指出的,您总是可以将这些键映射到快捷方式。如果您想尝试更通用的解决方案,您可以检查我的“deleft”插件:

如果
块有嵌套的
{…},您的
块可以吗
和空行?你的
if
也可以有一个else块吗?如果答案是肯定的,你想用它们做什么?可以有空行和嵌套的
{…}
。如果else块使问题复杂化,我们现在可以忽略它。你的
if
块可以嵌套
{…}
和空行?你的
if
也可以有一个else块吗?如果答案是肯定的,你想用它们做什么?可以有空行和嵌套的
{…}
。如果else块使问题复杂化,我们现在可以忽略它。