Як скопіювати витягнутий текст у командний рядок VI


118

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

Чи є доступна настройка, яка дозволила б мені вставити витягнутий текст у командний рядок vim?

Я використовую gvim у Windows.

Відповіді:


174

спробуйте використовувати

<ctrl+r>"

де "означає регістр за замовчуванням.


7
Зауважте, що це також працює в звичайному режимі вставки, не тільки в командному рядку.
користувач55400

25
Якщо ви використовуєте *замість цього ", ви отримаєте вміст буфера обміну системи (що може бути зручно).
Даш-Том-Банг

40

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


10
Святе лайно, q:не чудово
Hubro

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 у командному рядку.

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

"*p

2

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.