Vim изменить текст как или сразу после его - PullRequest
7 голосов
/ 23 ноября 2011

В последнее время я y anking и p создаю много кода, который необходимо несколько изменить (обычно это простая замена). Я могу вручную выбрать его после вставки или для более длинных блоков, я полагаю, я мог бы посмотреть на количество вставленных строк (20 new lines) и использовать 20:s..., но, учитывая, что это vim, кажется, что должно быть / более быстрый способ сделать это.

Так есть ли способ выбрать или выполнить подстановку для текста, поскольку он p ut?

Ответы [ 2 ]

8 голосов
/ 23 ноября 2011

Сразу после выполнения p метки [ и ] относятся к номерам начальной и конечной строк вставленной области (также применяется в течение y).См. Справку для '[ и '] для объяснения.

Таким образом, вы можете использовать эти метки, чтобы сформировать диапазон, в котором нужно работать :s, как :'[,']s///.Это тогда будет работать в регионе только что дернул или вставил.Конечно, это не короткий, но если вы заботитесь об этом, вы можете отобразить это.Возможно, что-то вроде nnoremap <Leader>p p:'[,']s/.

3 голосов
/ 24 ноября 2011

Крис Морган уже выложил лучшее решение.Но вы также можете выполнять некоторые виды манипуляций непосредственно с текстом в реестре.Регистр по умолчанию для Янки ", поэтому вы можете сделать что-то вроде:

:let @" = substitute(@",'someword', 'somedifferentword','g')

Затем вставьте измененный текст регистра.Не так просто манипулировать связанными со строчным контекстом в многострочном регистровом тексте, поскольку текст в регистре представляет собой одну строку с одним начальным шаблоном (^) и одним концом ($).Но все еще может быть полезным.

Просто подумал, что я выброшу это, потому что это то, что я иногда делаю.

...