在vim中删除两个非连续行的方法

时间:2016-02-23 16:36:51

标签: vim

有没有办法用一个vim命令删除两个非连续的行(可以在一个步骤中撤消)。

我的文件是这样的:

if (enabled) {
    const a = 1;
    const b = 2;

    console.log(a + b);
}

并希望最终得到这个:

    const a = 1;
    const b = 2;

    console.log(a + b);

2 个答案:

答案 0 :(得分:2)

使用可视模式粘贴整个块。

yiBvaBVp

Vimcasts一集:Pasting from Visual mode

如需更多帮助,请参阅:

:h iB
:h aB
:h v_p

答案 1 :(得分:1)

如果您选择示例(例如v$%),那么

:'<,'>g/{\|}/d

会为您提供所需内容(如果没有嵌套{})。

另一种方法是录制一个宏,比如

# qa to start recording, the final q to stop. ^O is <Ctrl-o>
qaf{%dd^Oddq             

然后将其用于@a。

修改:更通用的解决方案(尽管仍使用可视模式):

您可以添加映射:

:xnoremap <leader>d <esc>:'<d \| '>d<cr>

删除最后一个视觉选择的第一行和最后一行。