notepad++中ctrl+shift+delete执行sci_lineenddelete命令,光标在行中时删至行尾(含换行符),在行尾换行符前时仅删换行符致两行合并,位置判断错误是其“不总管用”的主因。

Notepad++ 没有“删到行尾”的默认快捷键,但可以用 Ctrl+Shift+Delete 实现——前提是光标不在行尾;如果光标已在行尾(换行符前),这个组合键会直接删掉换行符,导致上下两行合并。
为什么 Ctrl+Shift+Delete 不总管用
这个快捷键实际触发的是 Scintilla 的 SCI_LINEENDDELETE 命令,行为严格依赖光标位置:
- 光标在行中任意位置(比如第5个字符后)→ 删除从光标到行尾(含换行符)的所有内容
- 光标恰好停在行尾换行符前(即按
End后的位置)→ 删除换行符本身,下一行被拉上来,不删任何“可见字符” - 光标在行尾换行符之后(极少见,需手动拖过去)→ 无反应
常见误操作:反复按 End → Ctrl+Shift+Delete,结果越删越乱,本质是光标位置判断错了。
Ctrl+Shift+Delete 和 Ctrl+Delete 的区别
两者都删“光标后”,但粒度不同:
-
Ctrl+Delete:删下一个单词(以空白、标点为界),适合代码/文本微调 -
Ctrl+Shift+Delete:删到行尾(含换行符),适合批量清理日志、配置行末注释
性能上没差异,但语义清晰度差很多。比如处理 key=value # comment 这类行,想清注释时用 Ctrl+Shift+Delete 更稳;想删 value 后面空格再输新值,用 Ctrl+Delete 更准。
替代方案:正则替换更可控
当需要“统一删所有行的行尾内容”(比如批量砍掉每行末的 ; 或 \),快捷键反而低效。直接上正则:
- 删掉每行末的分号及之后所有内容:
;替换为 空,查找模式选Regular expression,查找目标填;.*$ - 只删行尾空格和制表符(保留换行):
编辑 → 行操作 → 删除尾部空白,比手敲正则快且不易出错 - 注意:
$在正则中匹配“行尾位置”,不是字符,所以;.*$不会误吞下一行
容易踩的坑:勾选 Match case 或 Match whole word only 会让 $ 失效,务必关掉。
自定义快捷键要改 SCI_LINEENDDELETE
如果你常用这个操作,又嫌 Ctrl+Shift+Delete 容易按错(尤其笔记本键盘),可以重绑定:
- 进
Settings → Shortcut Mapper → Scintilla commands - 搜
SCI_LINEENDDELETE,双击修改为比如Ctrl+K - 注意别覆盖已有功能(
Ctrl+K默认是插入链接,但多数人不用)
改完立刻生效,无需重启。但得记住:这个命令不支持“撤销删掉的换行符”——一旦删了,Ctrl+Z 只能回退到删之前的状态,不会单独恢复换行符。











