BrokenBrake 06.08.2010 14:50

VimКак копировать в иксовый буфер если vim собран без его поддержки?

Распространённая почему-то ситуация.
Узнать, есть ли у вашего Vim поддержка X-буфера можно запустив его с параметром --version:

vim --version| grep clipboard
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
-X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save

Если стоит минус перед clipboard, значит облом. Лично мне не хочется пересобирать пакет из-за этого, поэтому решаю проблему другим способом. Есть такая утилитка - xsel, она может входить в ваш дистрибутив, а может и нет. В любом случае найти и поставить её не составит труда. И потом можно настроить в .vimrc примерно такие комбинации клавиш:

1
2
3
" При копировании добавить в иксовый буфер
nmap yy yy:silent .w !xclip<CR>
vmap y y:silent '<,'> w !xclip&lt;CR>


Это значит копирование одной строчки (к сожалению, без цифровых модификаторов) будет добавляться и в иксовый буфер, туда же пойдёт копирование выделения в визуальном режиме. Надеюсь, в комментариях подскажут более удобные решения.

Кстати, если ваш Vim всё же собран с включенной опцией clipboard, тогда вообще всё проще, пропишите в .vimrc:
1
2
" использовать иксовый буфер как основной
set clipboard=unnamed



P.S. Вставка из иксового буфера нормально работает в режиме вставки по +.


Тэги: clipboard vim копирование
+ 7 -
Похожие Поделиться

exelens 06.08.2010 16:15 #
Пожалуйста используй КАТ!
BrokenBrake 06.08.2010 16:23 #
Ладно.
kstep 06.08.2010 16:53 #
Дополню:

set clipboard=unnamed делать не обязательно, можно конкретно работать с иксовым буфером через префиксы "+ и "* к командам копирования/вставки/удаления (например "+yy — скопировать текущую строку в иксовый буфер, "*p — вставить строку из иксового буфера).

"+ — операции над главным (первым, primary) исковым буфером,
"* — операции над мышиным буфером (который заполняется, когда выделяешь что-то мышей).
BrokenBrake 06.08.2010 17:05 #
Можно, конечно, но это неудобно, решение с unnamed гораздо красивее.
kstep 06.08.2010 17:28 #
For whom how. Мне, например, не всегда удобно, когда буфер вима затирает основной буфер иксов, я предпочитаю более тонкий контроль над поведениями буферов, точно указывая какой буфер когда нужно использовать. В общем, кому что удобно.
BrokenBrake 06.08.2010 18:17 #
ну да, согласен.
vovans 06.08.2010 19:26 #
а зачем его собирать без поддержки иксов? Чтобы было чем заняться после сборки?

И зачем его вообще собирать? Есть дистрибутивы, где его нет по умолчанию?
BrokenBrake 06.08.2010 19:48 #
Этот вопрос лучше к авторам пакетов адресовать. Я не собирал Vim.
vovans 06.08.2010 20:04 #
Какой дистрибутив?
BrokenBrake 06.08.2010 20:08 #
Salix, то же самое во всех (скорей всего) дистрибутивах, основанных на SlackWare.
То же самое во многих сборках Ubuntu и Debian (не пользуюсь, просто встречал в сети удивлённые возгласы).
vovans 06.08.2010 20:19 #
хм, не знал :) действительно это так о0
vovans 06.08.2010 21:17 #
в дебе/убунте надо всего лишь vim-gui-common поставить...
goblinyara 06.08.2010 19:48 #
Есть дистрибутивы, где его нет по умолчанию?

LFS
vovans 06.08.2010 20:04 #
LFS собирали единицы...
vovans 06.08.2010 20:38 #
интересно, за что минус поставили... Даже Слака у единиц, а ЛФС собирают самые-самые... Что не так-то? Или я где-то высказался против самого ЛФС? о_0
BrokenBrake 06.08.2010 21:15 #
Тот, кто собирал LFS потратил столько нервных клеток, что сейчас хотя бы минусами пытается компенсировать :)
SIO 06.08.2010 20:59 #
Shift+выделение левой кнопкой мыши?
BrokenBrake 06.08.2010 21:14 #
А нафиг тогда Vim вообще? С мышей вообще не вариант.
SIO 06.08.2010 21:50 #
Хз, мало ли... Прочитал заголовок - ответил =)