Как заменить строку в кавычках на строку из буфера? - PullRequest
13 голосов
/ 19 декабря 2010

Я делаю следующее, чтобы скопировать текст внутри кавычек и вставить его в другое место (также внутри кавычек):

di"
go-to-buffer-for-copy
copy-string (ex. yi")
then-go-to-prev-buffer
paste-to-string (p)

Но я хочу сделать это проще, например:

yi"
go-to-buffer-for-paste
replace-inner-quotes-to-yanked-text

Ответы [ 3 ]

40 голосов
/ 19 декабря 2010

Для «замены внутренних кавычек на текст, который вырыли» можно использовать vi"p.

1 голос
/ 24 февраля 2017

Этот метод позволяет вам оставаться вне режима вставки и не требует привязки неназванного буфера обмена к системному буферу обмена:

  • yi" (дергать в кавычках
  • ?', за которыми следуют первые несколько букв текущего содержания целевых кавычек (поиск назад)
  • p (паста)
  • dt" (удалить ранее существовавший контент, который был в кавычках
1 голос
/ 06 августа 2013

(перетягивая мой комментарий в свой ответ)

Если вы используете vim с системным буфером обмена, вы можете сделать следующее:

  • "+yi", чтобы скопировать текствнутренние кавычки в системный буфер обмена
  • поместите курсор в кавычки, в которые вы хотите поместить этот текст
  • ci"<Ctrl-V><Esc> заменяет то, что внутри кавычек, содержимым вашего буфера обмена

Одним из преимуществ является то, что если вы хотите поместить исходный текст в нескольких местах, вы можете поместить курсор в следующую позицию и нажать ..

vi"p, предложенный Рэнди Моррисом,работает, но заменяет содержимое вашего регистра по умолчанию, и выделение не будет зафиксировано в команде «сделать снова», только вставка.

Вы все равно можете использовать регистр "0 для доступа к исходному тексту.но я не нашел команду, которая изменила бы внутри кавычек и вставила бы таким образом, который поддерживает повтор.

...