vim та буфер обміну системи


9

Я можу передати файл, скопіювати та вставити текст середньою кнопкою або вставкою shift.

Як я можу скопіювати текст у vim та вставити його із системного буфера обміну?


іноді я використовую sed -n5,10pдля друку рядків 5-10, щоб я міг легше копіювати та вставляти, не реагуючи на vim, реагуючи на мишу.
grantbow

насправді зсередини vim виглядає команда:!sed -n 5,10p %
grantbow

Дякую за всі коментарі та відповіді. xclip іноді корисний, спасибі @ sergiy-kolodyazhnyy. Коли я працюю на різних машинах, я іноді не маю контролю над тим, який встановлений vim, але корисні інструкції щодо перевірки відповіді @muru, дякую @ ashutosh-tripathy. Мені потрібно частіше використовувати команди регістру vim, щоб запам'ятати їх, коли вони мені потрібні. Як я вже згадував у вищезазначеному запитанні, якщо я хочу це зробити швидко, а файл невеликий, команда всередині vim виглядає так:!cat %
grantbow

Відповіді:


12

Ви повинні мати Vim з clipboardі xtermclipboardХарактеристика скомпільовано. В Ubuntu, вони доступні тільки з ВІМ GUI пакетів ( vim-gnome, vim-gtk, vim-athenaі т.д.).

Після встановлення одного з них ви можете скопіювати (і вставити з) буфер обміну ( *і +). З цієї дуже інформативної публікації про Vi та Vim :

Для систем на базі X11 (тобто Linux та більшості інших UNIX- подібних систем) є 2 буфера обміну, які не залежать один від одного:

  • ПЕРШИЙ - Це копія при виборі і може бути вставлена ​​за допомогою середньої кнопки миші.
  • CLIPBOARD - це скопійовано (як правило) ^Cта вставлено ^V(це як MS Windows).

Vim має 2 спеціальні регістри, що відповідають цим буферам обміну:

  • *використовує PRIMARY; Мнемоніка: s дьоготь s обирає (для копіювання-on з Обраним)
  • +використовує CLIPBOARD; мнемонічний: CTRL + C (для загальної зв'язки клавіш)

Щоб скопіювати в регістр, ви передуєте команді copy ( y) з "і назвою регістра ( *наприклад,). "*y, потім клацніть середнім клавішею, щоб вставити, або "+yта ShiftInsertвставити.


3

З цього питання випливає досить цікаве рішення . Встановіть xclip, потім виведіть команду на команду xclip ( cat file | xclip -selection clipboardнаприклад), а потім вставте її куди завгодно (якщо це в терміналі - використовуйте Ctrl ShiftV ). Тепер, виявляється, ви можете насправді скоротити цю команду xclip -sel clip, що зовсім не видно з читання сторінки man або прикладів там.


2
Ще один вихід - якщо ви користуєтеся екраном або tmux разом із цим плагіном . У будь-якому випадку щось потрібно встановити.
муру

Який власний буфер обміну, який використовується на x сервері? Я нічого не знайшов /dev, але текст все ще десь зберігається, правда?
Сергій Колодяжний

Я завжди вважав, що це буде в пам'яті. Це здається приємним питанням для Unix та Linux .
муру

3

У мене виникла проблема, оскільки мій 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.