Vim отлично, но, как и многие люди, я очень раздражаюсь, когда хочу скопировать, удалить, а затем вставить - буфер yank перезаписывается действием удаления.
Теперь я знаю, что есть 101 work-arounds и сопоставления, некоторые из которых перечислены в сообщениях, подобных этому: Любой способ удалить в vim без перезаписи вашего последнего yank?
Но у всех этих решений есть недостатки - даже я был буфером-гуру (которого я не знаю). Например, избыточные нажатия клавиш - в то время как я обычно xxxx, чтобы быстро удалить 4 символа (только одно нажатие клавиши, потому что я держу его и жду авторежима), мне небезопасно переключаться на x, x, x, x или независимо от отображения, мне нужно использовать другой буфер.
То, что действительно было бы идеальным, - это просто режим переключения, посредством которого вы можете включать и отключать поведение побочных эффектов клавиш D, d, X и x, чтобы они поочередно выполняли или не записывали свой текст в буфер. Таким образом, я могу просто ввести режим "без побочных эффектов" и удалить его до содержания сердца, а затем вставить, когда я буду готов. При необходимости снова включите побочные эффекты.
Кто-нибудь знает, как это сделать?
[UPDATE: SOLUTION] OK У меня получилось: я написал функцию, которая переключает режим "без побочных эффектов"... отлично работает! См. Мой принятый правильный ответ ниже
[UPDATE # 2] Мое решение все еще отлично работает, и я использую его все время, когда я делаю много удаления и вставки. Но тем временем я также нашел более легкий способ удовлетворить конкретный вариант использования копии, вставки, удаления для простых случаев, когда текст для удаления является смежным.
После нормального поиска текста я затем визуально выделяю текст для удаления с помощью команды v, а затем просто вставляю его с помощью команды p. Это обеспечивает желаемый эффект без какого-либо специального отображения.
Единственная проблема с этим документооборотом заключается в том, что если я захочу вставить снова, оригинальный буфер вставки будет перезаписан актом вставки над выделенным текстом, но это поведение легко изменить с помощью следующего отображения в .vimrc:
vnoremap p "_dp
vnoremap P "_dP