Это связано с / продолжением Как я могу заменить вставленный текст в vim, не удаляя удаленные строки?
Таким образом, vnoremap p "_dP
используется для вставки визуально выделенного текста без перезаписи регистра "*
замененным текстом. Таким образом, последующие визуально отобранные пасты остаются неизменными.
Этот переназначение работает, как и ожидалось, за исключением случаев, когда визуальный выбор за символом идет до конца строки. Я пытаюсь найти способ справиться с этим условно, чтобы:
- в этом конкретном случае, выполните
"_dp
- в противном случае, сделайте
"_dP
Я имею в виду vnoremap p
для функции vimscript, которая проверяет этот конкретный случай, т. Е. «Если визуальный выбор - символьный, а курсор находится в конце строки», и выполняю соответственно.
meta - если vimscript является ответом, может быть, я должен опубликовать в StackOverflow?
Обновить
Работает с:
vnoremap <expr> p (getregtype() ==# 'v' && col(".") == col("$") - 1 ? '"_dp' : '"_dP')