LINUX.ORG.RU

[РЕШЕНО] Копирование текста vim в буфер обмена

 ,


0

1

Как в vim выделить текст и скопировать его в буфер? Я пробывал выделять текст в режиме visual и с помощью кейбинда xclip -i -sel c копировать в буфер xorg, но не получилось. Но когда я выделил текст мышкой, то бинд сработал. Хотелось бы выделять текст с клавиатуры и с помощью бинда копировать его в стандартный буфер, чтобы можно было потом вставить его с помощью ctrl+v.

:h clipboard-tool

:h g:clipboard

(по крайней мере в NeoVim)

У меня это устроено так:

let g:clipboard = {
	\ 'name': 'xclip',
	\ 'copy': {
		\ '+': 'xclip -i',
		\ '*': 'xclip -i',
	\ },
	\ 'paste': {
		\ '+': 'xclip -o',
		\ '*': 'xclip -o',
	\ },
	\ 'cache_enabled': 1,
\ }
mord0d ★★★★★ ()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от RedMaun

Я сделал так map v$"+y и вим выводит ошибку: No mapping found

А так (пробел после F2): map <F2> v$"+y<CR>

Но непонятно, зачем вам в бинде переход в визуальный режим и выделение строки от текущей позиции до ее конца?

andreyu ★★★★★ ()

Я пробывал

шоман мы узнали тебя

mos ★★☆☆☆ ()
Ответ на: комментарий от andreyu

А так (пробел после F2): map <F2> v$«+y<CR>

Не работает

Но непонятно, зачем вам в бинде переход в визуальный режим и выделение строки от текущей позиции до ее конца?

Не знаю. Можно как-то по-другому?

RedMaun ()
Ответ на: комментарий от RedMaun

Это буквально последовательность клавиш которые нужно нажать в нормал моде, что бы скопировать от текущей позиции курсора до конца строки в буфер обмена. На самом деле - выделение оставлено чисто для наглядности, если нужен конкретно такой результат, то его можно опустить.

pon4ik ★★★★★ ()
Ответ на: комментарий от RedMaun

Терминал - не при чём. Ну точнее, как проверить, что терминал не причём:

echo "asd dsa" | xclip -sel clip

Если вставляется потом asd dsa - значит должно и в vim’e работать.

pon4ik ★★★★★ ()
Ответ на: комментарий от RedMaun

что не работает?
после +yy что в регистре? что в X PRIMARY selection?
:reg и xclip -o
Также, что выводят
vim --version | grep clipboard
:set clipboard?

arrecck ★★ ()
Ответ на: комментарий от RedMaun

в стандартном vim такого нет

Но точно есть :h clipboard. А вот забиндить что-то кастомное — придётся городить мапы.

mord0d ★★★★★ ()
Ответ на: комментарий от RedMaun

А как оно работает? Вы зажимаете какую-то комбинацию или что?

Нет, дефолтное выделение+копирование средствами NeoVim вызывает внешнюю программу (в моём случае xclip) без моего участия. Я просто делаю [v|V|^V][move]y или [0-9]d[dw] и оно копируется/вырезается в иксовый буфер обмена. Удобно при работе даже просто в нескольких инстансах NeoVim в разных окнах.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Получилось, это наверное самое удобное решение, спасибо.

RedMaun ()
Ответ на: комментарий от RedMaun

Не работает, пробывал.

Может vim собран без поддержки иксового клипборда? Посмотрите есть ли плюсик у clipboard (возможно, нужен еще и X11) в выхлопе команды :version.

andreyu ★★★★★ ()
Ответ на: комментарий от RedMaun

Я выделяю текст с помощью режима visual, потом нажимаю y и текст не копироется ни в буффер xorg’a,

Видимо потому, что вы уже перешли в визуальный режим, выделили текст, а потом мапингом снова пытаетесь выделить текст. Только повторная команда v снимет выделение и переведет vim в normal mode.

Одним словом, вам нужно для начала разобраться, что означает каждый из символов-команд, а уже потом делать маппинг.

И вообще, рекомендую пройти vimtutor и поиграть в https://www.vimgolf.com

ни в обычный буфер.

А что такое «обычный» буфер в понятиях vim? У него очень много буферов.

andreyu ★★★★★ ()
Ответ на: комментарий от RedMaun

Я просто установил gvim и все заработало

Значит у вас действительно vim был собран без поддержки нужных clipboard и/или X11.

Но мой комментарий по поводу v$ остается в силе.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

А что такое «обычный» буфер в понятиях vim? У него очень много буферов.

Я имел ввиду не буфер вима, а буфер ос

RedMaun ()
Ответ на: комментарий от andreyu

Видимо потому, что вы уже перешли в визуальный режим, выделили текст, а потом мапингом снова пытаетесь выделить текст. Только повторная команда v снимет выделение и переведет vim в normal mode.

Нет, в бинде у меня был просто xclip -i -sel c, который просто переносит скопированное в буфер ос. В gvim этот бинд работает.

RedMaun ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.