Vim中Y命令默认行为为何异于D/C模式?需手动映射?
Vim Y命令默认行为的疑问解答
关于速查表的问题
你提到的速查表并非过时,它大概率展示的是自定义映射后的常用行为。Vim默认情况下Y确实和yy效果一致,都是复制整行;而D(删除到行尾)、C(修改到行尾)是默认就遵循"操作到行尾"的模式,速查表可能把用户普遍会做的nnoremap Y y$映射当成了默认行为来展示。
Y命令特殊的原因:历史遗留兼容
这得从Vim的前身Vi说起:
- 早期Vi中并没有
yy命令,Y就是用来复制整行的; - 后来Vi新增了
yy命令来和dd(删除整行)对应,但为了兼容已经习惯用Y复制整行的老用户,没有修改Y的原有行为; - Vim完全继承了Vi的这个设计,导致
Y和同类型的D、C行为不一致——毕竟D和C在Vi里就是按"操作到行尾"来设计的,没有历史包袱。
为何需要手动映射
Vim开发团队一直非常重视向后兼容性,不愿意轻易改动默认行为打破老用户的使用习惯。对于觉得默认Y不符合直觉的新用户,官方提供了nnoremap Y y$这种自定义映射方案,让用户按需调整,平衡了兼容和易用性。
内容的提问来源于stack exchange,提问作者kalexei
相关产品推荐
相关产品推荐

