Как скопировать выделенные строки в буфер обмена в vim. Я знаю, как это сделать для всех текстовых файлов, но я хочу сделать это для выбранных строк. Спасибо!
Как скопировать выделенные строки в буфер обмена в vim
- связанные: stackoverflow.com/questions / 7694633 /, stackoverflow.com/questions/3961859/ 07.02.2012
- см. vim.wikia.com/wiki/Cut/copy_and_paste_using_visual_selection 28.05.2014
Ответы:
SHIFT V переводит вас в режим выбора строк. Затем " * y перетаскивает выбранные в данный момент строки в регистр *
, который является буфером обмена. Есть довольно много разных регистров для разных целей. Подробнее о различиях между регистрами *
и +
на Windows и Linux.
Если вы работаете в Linux и используете VIm версии 7.3.74 или выше (версия, которая устанавливается в Ubuntu 11.10 и более поздних версиях, удовлетворяет этому), вы можете сделать
set clipboard=unnamedplus
который поместит извлеченный текст в глобальный буфер обмена и позволит вам вставить его из глобального буфера обмена без использования каких-либо специальных регистров. В отличие от решения ldigas, это также будет работать с версиями VIm без графического интерфейса.
vim-gnome
вместо vim
. 27.11.2012 vim --version | grep "+xterm_clipboard"
. 28.11.2013 clipboard=unnamed
(vim.wikia.com/wiki/ Accessing_the_system_clipboard) 08.12.2016 set guioptions+=a
будет ... ммм, короче говоря, всякий раз, когда вы выбираете / дергаете что-то, также помещает это в буфер обмена (не в Vim, а в глобальную клавиатуру оконной системы). Таким образом, вам не придется думать о занесении данных в специальный регистр.
Для GVIM нажмите v
, чтобы перейти в визуальный режим; выделите текст и нажмите Ctrl+Insert
, чтобы скопировать выделение в глобальный буфер обмена.
Из меню видно, что это сочетание клавиш "+y
, т.е. удерживайте клавишу Shift, затем нажмите "
, затем +
, затем отпустите Shift и нажмите y
(громоздко по сравнению с Shift + Insert).
Если вы используете vim в MAC OSX, к сожалению, он поставляется со старой версией и не соответствует параметрам буфера обмена. К счастью, домашнее пиво легко решает эту проблему.
установить vim:
brew install vim --with-lua --with-override-system-vim
установить версию vim с графическим интерфейсом:
brew install macvim --with-lua --with-override-system-vim
перезапустите терминал, чтобы изменения вступили в силу.
добавьте следующую строку в ~ / .vimrc
set clipboard=unnamed
теперь вы можете скопировать строку в vim withyy
и вставить ее по всей системе.
Установите "xclip", если еще не ...
sudo apt-get install xclip
Xclip помещает данные в буфер обмена «выделенный / выделенный», который вы щелкаете средней кнопкой мыши, чтобы вставить, в отличие от «ctrl + v»
В vim используйте ex-команды:
7w !xclip
or
1,7w !xclip
or
%w !xclip
Затем просто щелкните средней кнопкой мыши, чтобы вставить в любое другое приложение ...
Если vim скомпилирован с поддержкой буфера обмена, вы можете использовать "*y
значение: скопировать визуально выделенный текст в регистр *
('*' для буфера обмена)
Если нет поддержки буфера обмена, я думаю, что единственный способ - использовать Ctrl+Insert
после визуального выделения текста в vim.
Я добавил следующую строку в свой .vimrc
vnoremap <F5> "+y<CR>
Это позволяет скопировать выделенный текст в буфер обмена, нажав F5
. Чтобы это работало, вы должны находиться в визуальном режиме.
~/.vimrc
Спасибо, это намного лучше. 15.05.2020 Добавьте следующий код в свой .vimrc
:
if has('clipboard')
if has('unnamedplus') " When possible use + register for copy-paste
set clipboard=unnamed,unnamedplus
else " On mac and Windows, use * register for copy-paste
set clipboard=unnamed
endif
endif
Сначала проверьте, поддерживает ли ваша установка vim буфер обмена.
vim --version
Если установлена поддержка буфера обмена, вы увидите:
+clipboard
+X11
+xterm_clipboard
Если поддержка буфера обмена не установлена, вы увидите:
-clipboard
-X11
-xterm_clipboard
Чтобы установить поддержку буфера обмена:
apt-get install vim-gnome
Убедившись, что поддержка буфера обмена установлена, выполните следующие действия:
- Установите курсор на первую строку, которую хотите скопировать.
- Нажмите Shift v, чтобы войти в визуальный режим.
- Нажмите ↓, чтобы выбрать несколько строк.
- Нажмите + y, чтобы скопировать выделенный текст в системный буфер обмена.
- Теперь вы можете скопировать выделенный текст в браузер, текстовый редактор и т. Д.
- Нажмите + p, если вы хотите скопировать текст системного буфера обмена в vim.
Вышеупомянутые шаги могут быть утомительными, если вам придется многократно копировать из vim в системный буфер обмена и наоборот. Вы можете создать ярлыки vim, чтобы при нажатии Ctrl c выделенный текст копировался в системный буфер обмена. И когда вы нажимаете Ctrl p, текст системного буфера обмена копируется в vim. Чтобы создать ярлыки:
Откройте файл .vimrc и добавьте следующий текст в конец файла:
nnoremap <C-c> "+y vnoremap <C-c> "+y nnoremap <C-p> "+p vnoremap <C-p> "+p
Сохраните и перезагрузите ваш .vimrc, чтобы применить новые изменения.
Установите курсор на первую строку, которую хотите скопировать.
Нажмите Shift v, чтобы войти в визуальный режим.
Нажмите ↓, чтобы выбрать несколько строк.
Нажмите Ctrl c, чтобы скопировать выделенный текст в системный буфер обмена.
Теперь вы можете скопировать выделенный текст в браузер, текстовый редактор и т. Д.
Нажмите Ctrl p, если вы хотите скопировать текст системного буфера обмена в vim.
Примечание: это для систем ubuntu.
Вот шаги, которые подойдут:
- Файл с открытым исходным кодом в vim.
- Перейдите в визуальный режим, нажав shift v
- Выберите количество строк, перемещая клавиши со стрелками вверх / вниз.
- Когда текст, который нужно скопировать, выделен, скопируйте его в + регистр, нажав следующие клавиши: + y
- Теперь откройте целевой файл в vim.
- Вставьте текст, скопированный на шаге 4, в целевой файл, нажав: Ctrl v