Ctrl+Shift+K能删除整行(含换行符),而非仅行尾换行符;若需合并行,应将光标置于行尾后按Delete删换行符,Backspace在行首无效因其只删光标前字符。

Ctrl+Shift+K 为什么删不掉行尾换行符?
它根本不是用来删“行尾换行符”的——Ctrl+Shift+K 删的是整行(含换行符),结果是把当前行连同它后面的换行符一起抹掉,下一行会自动上移。如果你只想去掉某行末尾的 \n 或 \r\n,让它和下一行“合并”,这个快捷键不适用。
手动删行尾换行符的可靠操作
光标停在行尾(即换行符前),直接按 Delete 即可删掉紧跟其后的换行符。这是最直接、无副作用的方式:
- 确保光标在行末字符后、换行符前(VSCode 状态栏会显示类似
Ln 4, Col 27,且列号等于该行字符数) - 按一次
Delete,当前行与下一行合并,光标停在合并后的新行同一列位置 - 如果按了没反应,大概率是光标还在行内(没到末尾),或已跨到下一行开头(此时
Delete删的是下一行首字符)
批量处理行尾换行符:正则替换要加 m 标志
想批量去掉多行末尾的换行符(比如生成紧凑 JSON 或拼接日志),不能用 ^\s*$ 这类匹配空行的写法——那是删整行。正确做法是匹配“行末换行符本身”:
- 打开搜索面板(
Ctrl+H),启用.*(正则)和\n(多行模式) - 查找:
\r?\n(?!\s*$)—— 匹配非空行末的换行符(避免误吞最后一行) - 替换:留空
- 注意:
\r?\n覆盖\n和\r\n;(?!\s*$)是负向先行断言,防止把空行也“合并”掉
为什么 Backspace 在行首按无效?
Backspace 只删光标前一个字符,行首没有前驱字符可删,自然没反应。它无法触发行尾换行符——因为换行符在光标“后面”。只有 Delete 面向光标后方,才是删换行符的正确按键。很多人习惯性按 Backspace 想“退格删空行”,结果什么都没发生,其实是方向错了。


















