VIM: добавить в буфер обмена - PullRequest
8 голосов
/ 10 июня 2011

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

p.e. Я использую это в моем коде
let @+ = my_expression

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

Я знаю, что могу использовать регистр a-z для добавления к
возможная ошибка let @B = my_expression
добавить в регистр b

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

Ответы [ 2 ]

13 голосов
/ 10 июня 2011

использование:

let @+ = @+ . my_expression

или короче:

let @+ .= my_expression

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

9 голосов
/ 05 июня 2013

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

В упрощенном виде есть 26 дополнительных «настраиваемых буферов обмена», называемых регистрами, в которых можно хранить текст, начиная с a и вплоть до z. Вы добавляете текст в регистр в командном режиме, нажимая ", называя регистр (скажем, f), а затем вводя «движение», в котором вы хотите выделить текст.

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

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

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

Введите "fyy в командном режиме, чтобы заполнить регистр одной строкой (yy). Введите p (* см. Ниже), чтобы сразу же вставить его. Таким образом, результат ввода "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, чтобы вставить. Вы добавили «Это моя третья строка». к содержанию ф.

Результат

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 с буфером обмена по умолчанию».
...