Я использую vim уже несколько месяцев, и я привык использовать C и D для изменения и удаления всего, от курсора до конца строки. .
Рассмотрим строку ниже, где курсор находится на «b» в «баре»:
foo.bar("hello world")
Нажатие D в этой точке приведет к:
foo.
При нажатии C будет сделано то же самое, плюс начнется режим вставки с курсором. после периода.
Однако нажатие Y не делает интуитивно похожую вещь (копирование всего от курсора до конца строки). Вместо этого он копирует всю строку (так же, как уу).
Как заставить Y скопировать символы из курсора в конец строки вместо копирования всей строки, например, yy?
nmap Y y$
Это делает то, что вы хотите?
EDIT
Причина, по которой Y делает то же самое, что и yy, вероятно, имеет отношение к следующему:
{Visual}["x]y Yank the highlighted text [into register x] (for
{Visual} see |Visual-mode|). {not in Vi}
*v_Y*
{Visual}["x]Y Yank the highlighted lines [into register x] (for
{Visual} see |Visual-mode|). {not in Vi}
Y предназначен для работы со строками, y предназначен для работы с отдельными символами?
." make Y effect to end of line instead of whole line
map Y y$
Я подозреваю, что поведение по умолчанию просто связано с некоторым историческим несоответствием.