Как скопировать извлеченный текст в командную строку VI


118

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

Есть ли какая-нибудь настройка, которая позволила бы мне вставить извлеченный текст в командную строку vim?

Я использую gvim в Windows.

Ответы:


174

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

<ctrl+r>"

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


7
Обратите внимание, что это также работает в обычном режиме вставки, а не только в командной строке.
user55400

25
Если вы используете *вместо ", вы получите вместо этого содержимое системного буфера обмена (что может быть удобно).
dash-tom-bang

40

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


10
Святое дерьмо, q:за гранью
крутого

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

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

БУДЕТ создавать "забавный путь к файлу", содержащий "\ r", если вы не удалите последний ^M...


13

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

 <ctl-r><ctl-w>

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

:%s/<ctl-r><ctl-w>/foo/g

5

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

  1. Наведите курсор на слово
  2. Затем вы можете ввести что-то вроде :vim <C-r><C-w> *

3

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

"*yy

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

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

"*p

2

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.