为什么Y是yy而不是y $的同义词?
是否有特定的历史原因? 背景 -(如果您已经理解了这个问题,则可以跳过此部分。) 作为中级/高级vi用户会知道,y是在“抽出”命令它猛拉(份)由下面的移动命令指定的文本。*因此ye猛拉到字的结束时,y0从光标位置猛拉到行的开始,y_拖动整个当前行,y$从光标位置拖动到当前行的末尾,依此类推。 的d(删除)命令和c(变化)命令都可以与所有这些运动的被使用。 dd是的同义词,d_并删除整个当前行。同样,cc是的同义词c_,并将更改当前行(即它将删除所有文本,并在行的开头将您置于插入模式)。** “ yank”命令遵循此约定;yy会像一样拉动整个当前行y_。 还有另一组同义词:D是的同义词,d$将从光标位置到行尾将其删除。 C是的同义词c$,它将文本从光标位置更改到行尾,使您进入插入模式以键入新文本。 但是,Y是或的另一个同义词,它将使整行yyy_(而不是象从Cand D模式中所期望的那样)从光标移至行的结尾。 我了解在Vim中一直保持这种方式来保持与向后的兼容性vi,如Vim帮助中所述:help Y: 如果您希望“ Y”从光标到行尾(更合逻辑,但不兼容Vi),请使用“:map Y y $”。 因此,这是来自的延期vi。精细。 但是,为什么命令最初是这样设计的?有没有逻辑呢? *具体来说,它将文本放置在寄存器0中,并将未命名的寄存器指向寄存器0。 **尽管这不是有关我的问题,S是另一个同义词cc或c_。