vim - 如何在vim中根据条件执行行串联?

标签 vim concatenation vi

在 vim 中,如何在我的文件上运行以下逻辑:

If the line n not end with a semicolon, concatenate lines n and n + 1.

我的文件损坏了 SQL 语句:

broken version

select * from tab1;
select col4, col5 from
 tab5;
insert into
 tab6 values(
2, 4);

required version

select * from tab1;
select col4, col5 from tab5;
insert into tab6 values(2, 4);

最佳答案

:v/;$/normal J

您可能需要运行几次。

编辑:这是一个解决多行(>2)行分割问题的解决方案:

%s/^\s*$\|\([^;]\)\s*\n/\1/g 

注意:空行被保留,但由于 ^\s*$ 而被修剪

关于vim - 如何在vim中根据条件执行行串联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4278580/

相关文章:

intellij-idea - 我如何像普通 vim 一样在ideavim 中重放宏?

C# append 字典

sql - Postgres 将超过 100 个参数传递给 CONCAT 函数

vim - 防止 Vim 以井号 "#"开始行?

vim - 替换每一行的第一个字符

Vim:禁用特定行的自动换行

Vim 折叠 - 标记打开的折叠

python - Pandas 将所有列的值连接到一个新的列列表中

regex - 在 VI 编辑器中将每个出现的正则表达式匹配替换为特定的正则表达式?

django - 更改vim缩进格式