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