it-swarm-ru.tech

Как скопировать текст из vim во внешнюю программу?

Я пытаюсь скопировать текст из Vim. Я делаю v, чтобы войти в визуальный режим, затем y, как только я выбрал свой блок.

Похоже, что текст скопирован в буфер обмена vim, потому что p вставит его. Но в другой программе (например, Chrome) щелчок правой кнопкой мыши -> вставка не вставляет правильный текст. Как мне скопировать текст в правильный буфер обмена?

91
ripper234

Следующее будет работать только если vim --version означает, что у вас есть +xterm_clipboard характерная черта. Если нет, вам придется установить дополнительные пакеты или перекомпилировать vim с добавленной функцией.


На самом деле есть два варианта:

"+y

копирует в "обычный" буфер буфера обмена (так что вы можете вставить, используя Ctrl + V, щелкнуть правой кнопкой мыши и выбрать "Вставить" и т. д.), пока

"*y

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

Обратите внимание, что "* а также "+ работают в обе стороны. Так что если вы выбрали какой-то текст в другом приложении, вы можете вставить его в vim, используя "*p и ​​если вы скопировали какой-либо текст (например, используя Ctrl-C), вы можете вставить его в vim, используя "+p.

70
Hamish Downer

Если вы используете vim> = 7.3.74, вы можете поместить это в ваш vimrc:

set clipboard=unnamedplus

Который будет автоматически использовать + буфер (системный буфер обмена) по умолчанию. Затем, чтобы восстановить (скопировать), вы просто используете обычную команду y и ​​т.д.

Я обнаружил, что это поведение довольно раздражает, так как команды типа d помещают текст, с которым они работают, в буфер по умолчанию, что означало, что я не смог быстро выполнить dd и ​​вставить строку из интернета, например.

35
Reid

Удерживая клавишу Shift и выделите текст курсором мыши.
Текст будет скопирован в буфер обмена.

Это также работает для вставки из в буфер обмена в vim.

Для ясности, это работает для vim, работающего в терминале, таком как xterm.

31
Andrew Stacey

Я нахожу стандарт "+gP а также "+y команды очень сложны в использовании. Так что я переназначил Ctrl-Y за рывок в буфер обмена и Ctrl-P вставить из буфера обмена. Добавьте это к .vimrc

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP
11
Bernhard Heijstek

Не берите в голову, я нашел ответ - это написано в меню vim.

"+y

Очень интуитивно понятно.

6
ripper234

Просто чтобы добавить ответ, не относящийся к vim: Вы можете использовать Ctrl+Shift+C скопировать в системный буфер обмена в Ubuntu (если функциональность предоставлена ​​вашим эмулятором терминала, gnome-терминал для одного обеспечивает это). Ctrl+Shift+V вставляет в другое окно терминала, обычный Ctrl+V вставляет в приложение с графическим интерфейсом.

Кроме того, если вы выберете текст в терминале, а затем щелкните средней кнопкой мыши, он будет вставлен из буфера обмена X11.

4
crazy2be

Удерживайте клавишу SHIFT и мышкой выберите текст, чтобы скопировать его.

Затем вставьте в другую программу с помощью CTRL + v.

Работает в терминале на моей Ubuntu 16.04. Не уверен насчет gvim и ​​других систем.

enter image description here

4
Andrzej Rehmann

Когда я проверил, мой vim не поддерживает буфер обмена:

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Я установил vim-gnome, а затем снова проверил

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Теперь я могу копировать и вставлять, используя "+ y и" + p соответственно.

3
Ashutosh Tripathy

По умолчанию, если вы устанавливаете облегченную версию vim, у вас не будет +xterm_clipboard функция включена (vim --version | grep xterm), который необходим для использования * а также + регистрируется вне vim.

Чтобы включить его, вы должны либо скомпилировать vim самостоятельно, либо установить версию vim, которая поставляется вместе с предварительно активированной. Я использовал vim-gnome: Sudo apt-get install vim-gnome. Если вы выполняете vim --version | grep xterm, вы увидите, что сейчас +xterm_clipboard.

Теперь попробуйте скопировать в + а также * и ​​это должно работать.

2
laughing_man

Просто добавьте, если что-то работает, попробуйте переключить терминал, который упаковывает vim (если вы используете vim из терминала). Я обнаружил, что, например, буфер обмена недоступен с помощью guake, а доступен из gnome-терминала.

0
gc5