2012-02-06 2 views
52

Как скопировать выделенные строки в буфер обмена в vim. Я знаю, как это сделать для all text files, но я хочу сделать это для выбранных строк. Спасибо!Как скопировать выделенные строки в буфер обмена в vim

+0

связаны: http://stackoverflow.com/questions/7694633/copy-lines-using-visual-mode-in-vim, HTTP: // stackoverflow.com/questions/3961859/how-to-copy-to-clipboard-using-vim – eckes

+0

см. http://vim.wikia.com/wiki/Cut/copy_and_paste_using_visual_selection – laike9m

ответ

69

SHIFTV предлагает вам выбрать режим линий. Тогда "*у дергает выбранную в данный момент строки в * регистр, который является буфером обмена. Есть quite a few различных регистров, для различных целей. Смотрите раздел selection and drop registers для получения подробной информации о различиях между * и + регистрами Окна и Linux.

+0

В Linux + глобальный буфер обмена *, выбор буфер обмена, в то время как в Windows оба отображаются в глобальном буфере обмена. – Mohnish

+1

Любой способ сделать это в Mac Terminal? Это не требует установки файлов ... –

10
set guioptions+=a 

будет, ... гммм, короче говоря, всякий раз, когда вы выбираете/дергать что-то поместить его в буфер обмена, а также (не Vim, но глобальная клавиатура оконной системы). Таким образом, вам не нужно думать о том, чтобы вытащить вещи в спецификацию al register.

+1

//, к которым относятся эти операционные системы и/или версии Vim? –

56

Если вы на Linux и использовании VIM версии 7.3.74 или выше (версия, которая инсталлируется в Ubuntu 11.10 и далее удовлетворяет этому), вы можете сделать

set clipboard=unnamedplus

который поместит yanked text в глобальный буфер обмена и позволяет вам вставлять из глобального буфера обмена без необходимости использования каких-либо специальных регистров. В отличие от решения ldigas, это также будет работать с не-gui-версиями VIm.

+5

Это работает, только если я устанавливаю пакет 'vim-gnome' вместо' vim'. –

+4

@ dan-klasson: для этой опции требуется vim, который был скомпилирован с поддержкой буфера обмена. Вы можете проверить, действительно ли это, набрав 'vim -version | grep "+ xterm_clipboard". – BenC

+0

Это похоже на работу с другими программами, отличными от vim, но когда я перехожу в режим вставки в vim и использую «shift + insert» для вставки из буфера обмена, вставляются только первые две строки ... Я установил vim- гном; я что-то пропустил? – t2k32316

3

Установить «Xclip», если вы не ...

sudo apt-get install xclip

Xclip помещает данные в «выбор/выделен» буфер обмена, что вы средней кнопкой мыши, чтобы вставить в противоположность «Ctrl + v»

Хотя в Vim используйте команды например:

7w !xclip 

или

1,7w !xclip 

или

%w !xclip 

Затем просто нажмите среднюю кнопку мыши, чтобы вставить в любое другое приложение ...

6

Для GVim, ударил v идти в визуальном режиме; выберите текст и нажмите Ctrl+Insert, чтобы скопировать выделение в глобальный буфер обмена.

В меню вы можете увидеть, что сочетание клавиш является "+y т.е. удерживать клавишу Shift, а затем нажмите ", затем +, а затем отпустить клавишу Shift и нажмите y (громоздкий по сравнению с Shift + Insert).

3

Если ВИМ скомпилирован с буфером обмена поддержки, то вы можете использовать "*y значение: дергать визуально выделенный текст в регистр * («*» для буфера обмена)

Если нет поддержки буфера обмена, я думаю, только другой способ заключается в использовании Ctrl+Insert после визуального выбора текста в vim.

3

Если вы используете vim в MAC OSX, к сожалению, он поставляется со старым версией и не соответствует настройкам буфера обмена. К счастью, доморощенный может легко решить эту проблему.

установить Vim:

brew install vim --with-lua --with-override-system-vim

установить графический интерфейс Verion из Vim:

brew install macvim --with-lua --with-override-system-vim

перезагрузка терминала вступили в силу.

добавить следующую строку в ~/.vimrc

set clipboard=unnamed

теперь вы можете скопировать строку в Vim с yy и вставить его в масштабах всей системы.

+0

//, я просто протестировал это на OSX 10.12.3 и он работал правильно после того, как я установил как последнюю версию Vim, так и версию графического интерфейса Vim для латтетов, как вы рекомендовали здесь. Спасибо, @anonymous. –

0

Добавьте следующий код в ваш .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 
Смежные вопросы