Как добавить в буфер обмена

Я знаю, как копировать в буфер обмена, но как добавить в него?

Я использую это в своем коде:

let @+ =  my_expression

но это перезаписывает буфер обмена.

Я знаю, что могу использовать регистры a-z для добавления к:

let @B = my_expression

который добавляется в регистр b, но что мне делать, если я хочу добавить его в буфер обмена?


person Reman    schedule 10.06.2011    source источник


Ответы (2)


использовать:

let @+ = @+ . my_expression

или короче:

let @+ .= my_expression

Ссылка: :help :let.=

person Benoit    schedule 10.06.2011
comment
так просто! :) Большое Вам спасибо! - person Reman; 10.06.2011

Если вы не занимаетесь макросами, возможно, стоит также проверить регистры. :help registers был потрясающим.

Проще говоря, есть 26 дополнительных настраиваемых буферов обмена, называемых регистрами, в которых вы можете хранить текст, начиная с a и заканчивая z.

Вы добавляете текст в регистр в командном режиме, нажимая ", называя регистр (скажем, f), а затем вводя движение, которым вы хотите выделить текст.

ПРИМЕЧАНИЕ. Здесь мы используем регистр с именем f, т.к. он, вероятно, находится под вашим указательным пальцем левой руки. То есть f выбирается просто б / у удобно. Вы можете заменить f на a, u или z или что угодно, если хотите.


Копирование с регистром (курсор на [T]):

Исходное состояние файла

This is my first line.
[T]his is my second line. 
This is my third line.

Введите "fyy в командном режиме, чтобы заполнить регистр одной строкой (yy).

  • Введите p (* см. Ниже), чтобы немедленно вставить его из регистра по умолчанию.
  • Введите "f, чтобы выбрать регистр f, а затем p, чтобы вставить его напрямую из регистра f. Прямо сейчас f и по умолчанию то же самое.

Таким образом, результат ввода "fyyp точно такой же, как при вводе yyp с буфером обмена по умолчанию.

Результат

This is my first line.
This is my second line. 
[T]his is my second line. 
This is my third line.

Добавление в реестр:

Используйте заглавную букву, чтобы добавить в существующий реестр.

В приведенном выше примере после вставки нажмите j, чтобы перейти на строку вниз, а затем "Fyy. Затем введите p, чтобы вставить. Вы добавили. Это моя третья строка. к содержанию f.

Результат

This is my first line.
This is my second line. 
This is my second line. 
This is my third line.
This is my second line. 
[T]his is my third line.

(Использование строчных букв f привело бы к очистке содержимого f и в итоге осталось бы, что это будет только моя третья строка.)

Почему p вставляет то, что находится в регистре f сразу после того, как вы вставили f? Потому что ваш регистр по умолчанию содержит указатель на последний выбор и, по-видимому, не просто хранит то, что вы добавили в f, но извлекает все, что находится в f, когда вы добавляете. Было бы более наглядно сказать, что в первом случае результат ввода "fyy"fp точно такой же, как и при вводе yyp с буфером обмена по умолчанию.

Но если бы вы сейчас yy новую строку в регистре по умолчанию, вы можете нажать "f, чтобы выбрать регистр f, а затем p, чтобы вставить это предыдущее значение.

person ruffin    schedule 05.06.2013
comment
Хотя теперь Я узнал, @+ - это регистр буфера обмена, на всякий случай. - person ruffin; 05.06.2013
comment
И голос против? Прокомментируйте, пожалуйста, чтобы я мог исправить / интегрировать / ответить на вашу скрытую критику. - person ruffin; 07.06.2013
comment
OP спросил, как добавить в системный буфер обмена, что отличается от добавления в один из названных регистров в VIM - person DasEarl; 21.05.2019