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

<p>я пытаюсь скопировать текст из vim. я делаю <strong>v</strong>, чтобы войти в визуальный режим, затем <strong>y</strong>, как только я выбрал свой блок.</p><p>похоже, что текст скопирован в буфер обмена vim, потому что p вставит его. но в другой программе (например, chrome) щелчок правой кнопкой мыши -> вставка не вставляет правильный текст. как мне скопировать текст в правильный буфер обмена?</p>

<p>следующее будет работать только если <code>vim --version</code> означает, что у вас есть <code>+xterm\_clipboard</code> характерная черта. если нет, вам придется установить дополнительные пакеты или перекомпилировать vim с добавленной функцией.</p><hr><p>на самом деле есть два варианта:</p><pre><code>"+y </code></pre><p>копирует в "обычный" буфер буфера обмена (так что вы можете вставить, используя ctrl + v, щелкнуть правой кнопкой мыши и выбрать "вставить" и т. д.), пока</p><pre><code>"*y </code></pre><p>копирует в выбор x11 - вы можете вставить из этого буфера, используя средний щелчок.</p><p>обратите внимание, что <code>"*</code> а также <code>"+</code> работают в обе стороны. так что если вы выбрали какой-то текст в другом приложении, вы можете вставить его в vim, используя <code>"*p</code> и если вы скопировали какой-либо текст (например, используя ctrl-c), вы можете вставить его в vim, используя <code>"+p</code>.</p>

<p>если вы используете vim> = 7.3.74, вы можете поместить это в ваш vimrc:</p><pre><code>set clipboard=unnamedplus </code></pre><p>который будет автоматически использовать <code>+</code> буфер (системный буфер обмена) по умолчанию. затем, чтобы восстановить (скопировать), вы просто используете обычную команду <code>y</code> и т.д.</p><p>я обнаружил, что это поведение довольно раздражает, так как команды типа <code>d</code> помещают текст, с которым они работают, в буфер по умолчанию, что означало, что я не смог быстро выполнить <code>dd</code> и вставить строку из интернета, например.</p>

<p><strong>удерживая клавишу shift</strong> и выделите текст курсором мыши.<br> текст будет скопирован в буфер обмена.</p><p>это также работает для вставки <em> из </em> в буфер обмена в vim.</p><p>для ясности, это работает для <code>vim</code>, работающего в терминале, таком как <code>xterm</code>.</p>

<p>я нахожу стандарт <code>"+gp</code> а также <code>"+y</code> команды очень сложны в использовании. так что я переназначил <code>ctrl-y</code> за рывок в буфер обмена и <code>ctrl-p</code> вставить из буфера обмена. добавьте это к <code>.vimrc</code></p><pre><code>nnoremap <c-y> "+y vnoremap <c-y> "+y nnoremap <c-p> "+gp vnoremap <c-p> "+gp </code></pre>

<p>не берите в голову, я нашел ответ - это написано в меню vim.</p><pre><code>"+y </code></pre><p>очень интуитивно понятно.</p>

<p>просто чтобы добавить ответ, не относящийся к vim: вы можете использовать <code>ctrl+shift+c</code> скопировать в системный буфер обмена в ubuntu (если функциональность предоставлена вашим эмулятором терминала, gnome-терминал для одного обеспечивает это). <code>ctrl+shift+v</code> вставляет в другое окно терминала, обычный <code>ctrl+v</code> вставляет в приложение с графическим интерфейсом.</p><p>кроме того, если вы выберете текст в терминале, а затем щелкните средней кнопкой мыши, он будет вставлен из буфера обмена x11.</p>

<h3>удерживайте клавишу shift и мышкой выберите текст, чтобы скопировать его.</h3><p>затем вставьте в другую программу с помощью <code>ctrl + v</code>.</p><p>работает в терминале на моей ubuntu 16.04. не уверен насчет <code>gvim</code> и других систем.</p><p> <a href="https://i.stack.imgur.com/lbbvt.gif"><img src="https://i.stack.imgur.com/lbbvt.gif" alt="enter image description here"></a> </p>

<p>когда я проверил, мой vim не поддерживает буфер обмена:</p><pre><code>vim --version | grep clip -clipboard +insert\_expand +path\_extra +user\_commands +emacs\_tags -mouseshape +startuptime -xterm\_clipboard </code></pre><p>я установил vim-gnome, а затем снова проверил</p><pre><code>vim --version | grep clipboard +clipboard +insert\_expand +path\_extra +user\_commands +emacs\_tags +mouseshape +startuptime +xterm\_clipboard </code></pre><p>теперь я могу копировать и вставлять, используя "+ y и" + p соответственно.</p>

<p>по умолчанию, если вы устанавливаете облегченную версию vim, у вас не будет <code>+xterm\_clipboard</code> функция включена (<code>vim --version | grep xterm</code>), который необходим для использования <code>*</code> а также <code>+</code> регистрируется вне vim.</p><p>чтобы включить его, вы должны либо скомпилировать vim самостоятельно, либо установить версию vim, которая поставляется вместе с предварительно активированной. я использовал vim-gnome: <code>sudo apt-get install vim-gnome</code>. если вы выполняете <code>vim --version | grep xterm</code>, вы увидите, что сейчас <code>+xterm\_clipboard</code>.</p><p>теперь попробуйте скопировать в <code>+</code> а также <code>*</code> и это должно работать.</p>

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