Я использую систему Linux. Два vims открыты в двух терминалах. Теперь я хотел бы скопировать текст из A в B. Один из способов сделать это - выбрать текст в A, использовать мышь для копирования, затем переключиться на B, в режиме вставки команда вставит <c-r>+
текст.
Есть ли способ выполнить это без использования мыши? как "+yy
в A, когда переключиться на B o<c-r>+
,? Я изучил пару комбинаций напрасно. И я искал "копировать через терминалы", но ничего не нашел.
Пользователь @statox предполагает одно решение , используя визуальный режим, то есть v$"+y
в A, когда переключатель к B, o<c-r>+
.
Есть ли простой способ, который может скопировать текст в A, не входя в режим v? По общему признанию, вход в v-режим не требует слишком большого количества нажатий клавиш, просто подумайте, есть ли лучший способ. Например. если курсор находится в середине строки, yy
копирует всю строку (для регистрации "
), и 0v$y
делает то же самое с дополнительным нажатием клавиши.
Или, мой вопрос может быть уменьшен, если есть какой-либо способ с меньшим количеством нажатий клавиш, чем 0v$"+y
для копирования , так что я могу использовать <alt-tab>o<c-r>+
для вставки.
источник
"+y
а в другом экземпляре vim - регистр буфера обмена"+p
. Или дубликат этого ?y
с помощью движения (:help motion.txt
) или объекта (:help object-select
). Если вы часто тянете и вставляете в экземпляры Vim, вы можете найти этот параметрclipboard
включеннымunnamed
илиunnamedplus
полезным. См:help 'clipboard'
. Тогда копирование между экземплярами должно просто работать.0v$
так же, какV
. И это легко сделать отображение для"+y
::nnoremap <Leader>y "+y
. Так что это сводит кV\y
.V"+y
, это 4 нажатия клавиш.Ответы:
Вы можете проверить, построен ли Vim с поддержкой буфера обмена:
Если вывод такой
1
, следующего должно быть достаточно для достижения вашей цели:Вы можете сделать все это намного более плавным, синхронизируя регистр буфера обмена и регистр по умолчанию с этим параметром в вашем
vimrc
:Если вывод команды
:echo has('clipboard')
is0
, рассмотрите возможность установки правильного Vim, подобногоvim-gtk
илиvim-gnome
(имя пакета может отличаться от дистрибутива к дистрибутиву).источник
Я думаю, что решение, которое вы уже упоминали в своем вопросе, является правильным. Если вы хотите уменьшить количество нажатий клавиш, вы можете просто создать карту, например
Смотрите вторую запись здесь .
источник
Чтобы расширить ответ @ romainl, (с поддержкой буфера обмена) вы можете использовать регистры, которые используются совместно с системным буфером обмена.
При выполнении этих команд, вы у anking / копирование / сохранение выбранного содержимого в регистрах, и р asting их к месту назначения Вим-терминал. Эти два специальных регистра
+
и*
используются совместно с системным буфером обмена (и, следовательно, многими другими программами, такими как веб-браузер, gedit и т. Д.). Регистр+
связан с буфером копирования / вставки и*
связан с буфером выбора (тот, который вставляет копию выделения с помощью среднего щелчка по текстовому полю, скажем, в Ubuntu) и может быть вставлен с помощьюctrl + v
(ctrl + shift + v
на gnome-терминал).источник
1) В Fedora я использую следующую настройку:
vim-X11 поставляется с поддержкой буфера обмена - возможно, в других дистрибутивах он похож.
2) Установите псевдоним в моем .bashrc
3) В .vimrc:
Теперь обычный yank в Vim попадает в системный буфер обмена, и каждый Ctrl-C вне vim может быть вставлен в vim.
источник
Если вы используете Mac (OSX), вы можете установить bpcopy ( с использованием заварить установки pbcopy --see http://brew.sh/ для более подробной информации). Затем выполните следующую команду (прямая форма командной строки), не касаясь мыши:
ПРИМЕР:
1) В ТЕРМИНАЛЕ № 001 :
2) Вы можете переключиться на терминал № 002 (без использования мыши), используя встроенные горячие клавиши в приложении терминала OSX: command+i
3) В ТЕРМИНАЛЕ № 002 : Откройте новый файл в vim.
4) Переведите vim в режим вставки с помощьюi
5) Вставьте текст из буфера обмена с помощью command+ V(чтобы вставить из буфера обмена на Mac)
6) Наслаждайтесь остальным днем!
источник