Как скопировать набранный текст в командную строку VI - PullRequest
116 голосов
/ 25 мая 2009

Я хочу знать, можно ли каким-либо образом вставить вставленный текст в командное окно. Например, если я дернул слово и хочу найти его в каком-то месте, я не могу просто вставить слово, используя «p». Однако, если я скопирую его в буфер обмена, Shift-Insert вставит то же самое.

Доступен ли какой-либо твик, который позволил бы мне вставить набранный текст в командную строку vim? Я использую gvim в Windows.

Ответы [ 7 ]

164 голосов
/ 25 мая 2009

попробуйте использовать

<ctrl+r>"

где "означает регистр по умолчанию.

40 голосов
/ 25 мая 2009

<C-R>" Вставит буфер по умолчанию. Кроме того, вы можете использовать q:, чтобы открыть буфер для следующей команды. попробуйте :help q:

17 голосов
/ 25 мая 2009
  • убедитесь, что сначала вы находитесь в обычном режиме, нажав Esc
  • один раз в обычном режиме, нажмите :
  • затем используйте комбинацию клавиш ctrl-r, а затем введите "

Примечание: если вы набираете полную строку, содержащую относительный путь к файлу, перевод строки также будет вставлен ... т.е. :! touch src/bash/script.sh^M

создаст «смешной путь к файлу», содержащий «\ r», если вы не удалите последний ^M ...

13 голосов
/ 09 ноября 2013

Чтобы избавить вас от шага дергания, если курсор находится на слове, которое вы хотите использовать в Ex, используйте:

 <ctl-r><ctl-w>

Это позволяет избежать вставки в командную строку; вместо этого человек вставляет слово под курсором прямо в командную строку. Например:

:%s/<ctl-r><ctl-w>/foo/g
5 голосов
/ 02 июня 2013

Если это просто слово, которое вы хотите скопировать, вы можете использовать <C-r><C-w>

  1. Наведите курсор на слово
  2. Тогда вы можете напечатать что-то вроде :vim <C-r><C-w> *
3 голосов
/ 25 мая 2009

Вы можете восстановить буфер обмена, используя именованный буфер *. Например, это скопирует текущую строку в буфер обмена:

"*yy

Таким образом, вы можете скопировать строку, используя это, а затем вставить ее с помощью shift-insert в командной строке.

Аналогично, вы можете вставить из буфера обмена вот так:

"*p
2 голосов
/ 26 июня 2012

В буфере обмена +, по крайней мере на Mac. Поэтому вы должны написать "+yy, чтобы восстановить строку в буфере обмена, и "+p, чтобы вставить. Хотя вы всегда можете использовать Command-C и Command-V.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...