У меня есть текст, выдернутый с помощью yiw
. Теперь в другой строке я хочу заменить текст с текущей позиции курсора до конца строки, поэтому я пробую v$p
. Однако это также удаляет новую строку в конце строки, чего я не хочу. Как мне решить эту проблему?
Замена Vim до конца строки в обычном режиме
Ответы (2)
Вы можете:
отрегулируйте визуальную область, прежде чем ставить:
v$hp
используйте движение
:help g_
, если у вас нет завершающего пробела:vg_p
person
romainl
schedule
22.08.2020
Вы можете удалить в нулевой регистр, а затем вставить с помощью "_Dp
В качестве альтернативы, если вы хотите сохранить текст, который вы удаляете, вы можете удалить его в обычном буфере и вставить из буфера 0 с помощью D"0p
Я нахожу регистровые ключи неуклюжими, поэтому у меня есть карты для них в моем .vimrc:
" leader means "another option key like cmd or meta, but one you get to choose"
let mapleader = "\<Space>"
" get the yank register, not the thing you just deleted
nnoremap <Leader>p "0p
nnoremap <Leader>P "0P
" don't copy the thing you're gonna delete into the delete register
nnoremap <Leader>d "_d
nnoremap <Leader>D "_D
С этими привязками он становится Dp
или D p
в зависимости от того, хотите ли вы сохранить удаленный текст.
Если вы вообще не хотите возиться с регистрами, всегда есть простой PlD
.
person
jeremysprofile
schedule
22.08.2020
PlD самый классный (хотя и не эстетически приятный). Я не хотел возиться с регистрами, но, вероятно, попробую то, что вы описали!
- person piedpiper; 24.08.2020