Як скопіювати у буфер обміну у Vim?


752

Чи можна скопіювати у буфер обміну безпосередньо з Vim? yyлише копіює матеріали у внутрішній буфер Vim. Я хочу скопіювати в буфер обміну ОС. Чи є якась така команда у Vim, або ви можете лише забирати речі у Vim?


140
Будь ласка, дивіться недоголошену відповідь, яка пояснює важливий факт: ви повинні мати vim, складений із функцією + буфер обміну для будь-якого з наведених нижче пропозицій, щоб працювати в першу чергу! Це НЕ за замовчуванням у більшості систем.
Ніл Трафт

7
@NeilTraft, деякі відповіді пропонують переходити від vim до зовнішніх програм, тому твердження, що будь-яка відповідь вимагає + прапор буфера обміну, є помилковим. Просто вказуючи, щоб врятувати майбутніх читачів від плутанини.
Гнат

2
Можливий дублікат Як зробити пасту vim з буфера обміну (та скопіювати в)? (Зауважте: інше питання новітнє, але має кращі відповіді ІМХО, і саме тому я позначив це як дупу)
Мартін Турной

5
Переконайтесь, що ви зробили, sudo apt-get install vim-gnome перш ніж застосовувати ці команди нижче, або ви отримаєте недійсну помилку реєстрації!
Harnirvair Singh

7
@Harnirvair Для багатьох наборів читачів тут, vim-gnomeмабуть, надмірна кількість або просто недоступна в їх ОС / дистрибутиві, тоді як я підозрюю, що, vim-gtkпереважно, vim-gtk3існує більша ймовірність існування та витягування менших залежностей, при цьому все ще забезпечуючи інтеграцію буфера обміну (принаймні для тих, хто ще на X11; Я не впевнений, як це все взаємодіє з Wayland).
підкреслити_29

Відповіді:


496

*Регістр буде робити це. У Windows +і *рівнозначні. У unix є тонка різниця між +та *:

У Windows регістри * і + рівноцінні. Однак для систем X11 вони відрізняються. Для систем X11 * - це вибір, а + - буфер вирізання (наприклад, буфер обміну). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*це, мабуть, те, що ви хочете більшу частину часу, тому я використовую, *оскільки він функціонує так, як я очікую цього в обох середовищах.

У дистрибутивах Linux спочатку потрібно встановити vim-gtkака (а gvim), щоб отримати функцію буфера обміну. Це пояснюється тим, що vim, який не є gtk, зазвичай компілюється без підтримки X11. Це дозволяє йому працювати лише на консольних машинах (найчастіше на серверах).

А для тих, хто плутається в тому, як користуватися регістрами при пострілі або покладенні, ви просто напишіть "назву регістра. Отже, щоб скопіювати щось у реєстр буфера обміну, який ви вводите, "*yа потім для введення тексту "*p(кредит: Kyle Mathews)


31
Не працює на mac osx Lion. Після натискання клавіші "тоді *" цей шум видає мак, коли ви не можете щось зробити. Як це зробити на mac?
Едді

62
Ви також повинні переконатися, що vim складено з підтримкою буфера обміну. Типовий vim в Ubuntu не є. Спробуйте, vim --version|grep .xterm_clipboard -oі якщо це -тоді, у вас немає підтримки. Завантажте іншу версію відповідно до ubuntuforums.org/showthread.php?t=1686955
Sparhawk

66
Якщо ви використовуєте Linux, вам слід +зареєструватися. Наприклад, якщо ви хочете скопіювати три букви в буфер обміну системи, використовуйте команди типу v3j"+y, а потім ви можете вставити їх в інший додаток, ще один VIM. Використовуючи *реєстрацію під Linux, можна копіювати та вставляти лише різні програми VIM.
diabloneo

6
У Linux регістр * не працює для копіювання та вставлення зовні.
weberc2

11
weberc2 та diabloneo, реєстр * призначений для буфера обміну вибору, доступний з клацання середнім клавішею, а не вставкою меню або ^ V
Jim Keener

354

На Mac OSX

  • скопіюйте вибрану частину: візуально виберіть текст (введіть vабо Vв звичайному режимі) та введіть:w !pbcopy

  • скопіюйте весь файл :%w !pbcopy

  • вставити з буфера обміну :r !pbpaste

У більшості дистрибутивів Linux можна замінити:

  • pbcopyвище з xclip -i -sel cабоxsel -i -b
  • pbpasteз використанням xclip -o -sel -cабо xsel -o -b
    - Примітка. Якщо жоден із цих інструментів ( xselі xclip) не встановлений у вашому дистрибутиві, ви, ймовірно, можете знайти їх у репост

1
+1 Працює з Левом, хоча vim --versionшоу-clipboard
roplacebo

26
сумісний з vim, що постачається з mavericks osx. додати до свого .vimrc vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>Щоб скористатися цим відображенням, якщо потрібно скопіювати, виділіть текст у візуальному режимі та натисніть Ctrl-c для його копіювання. Щоб вставити з системного буфера обміну, натисніть Ctrl-v.
davidtingsu

7
У Linux це працює з: w! Xclip -sel c або: w! Xsel -b
trve.fa7ad

4
Для копії Linux Ctrl + C: в ~ / .vimrc додати:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy

3
Набагато корисніша відповідь, ніж прийнята. Дякую!
Брайс Джонсон

165

У файлі vimrc ви можете вказати автоматичне використання системного буфера обміну для копіювання та вставки.

У наборі Windows:

set clipboard=unnamed

На наборі Linux (vim 7.3.74+):

set clipboard=unnamedplus

ПРИМІТКА. Для роботи може знадобитися використовувати оновлену версію Vim.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard


39
Як додаток до вашої записки - можливо, вам також доведеться встановити додаткові пакети, щоб це спрацювало. Якщо вашому vim бракує +xterm_clipboardфункції (видно під час запуску vim --version). Так було для мене (працює Kubuntu 12.10). Мені довелося встановити vim-gui-commonпакет, щоб отримати правильну функціональність.
Джейкоб Далтон

4
set clipboard=unnamedпрацює в Mac OS 10.11.6 (El Capitan) з vim 7.4
Purplejacket

1. Скопіюйте при перетягуванні 2. вибір миші, працює в Mac Sierra-10.12.6 та vim-версії: 8.0.1800, вказавши наступні команди у файлі ~ / .vimrc set mouse=vтаset clipboard=unnamed
dkb

set clipboard=unnamedпрацює над MacOS Catalina
Дієго Сомар

Ви можете оновити свою відповідь. Він не працює на Ubuntu 18.04 з vim 8.0.
Luís de Sousa

124

Використовуйте регістр "+для копіювання в буфер обміну системи (тобто "+yзамість y).

Так само ви можете вставити "+текст, щоб отримати текст із буфера обміну системи (тобто "+pзамість p).


Я використовую "*, але здається, що в X є лише різниця
dash-tom-bang

3
@ dash-tom-bang: the +/* різниця в тому , SELECTIONпроти PRIMARYкопіювання буферів (не може згадати , що є що атм)
Daenyth

2
Так, зірка - це вибір, плюс буфер обміну.
dash-tom-bang

6
Символ подвійної лапки виступає селектором регістра в vi і vim.
Amardeep AC9MF

1
Два набори ярликів, які потрібно пам’ятати: "+yy(копіювати рядок у буфер обміну) та "+yy(Копіювати рядок у вибір); "+p(вставити з буфера обміну) та "*p(вставити з вибору). "це вибрати регістр , який є власним внутрішнім регістром Vim, за замовчуванням (шляху yyі pбуде працювати без посилань на будь - яких тип регістра). PS: Цікаво, чи є символ для власного внутрішнього реєстру Vim щось подібне, до "&yyякого звертається yyза замовчуванням.

72

@Jacob Dalton згадав про це у коментарі, але, схоже, ніхто не згадував у відповіді, що vim повинен бути складений із підтримкою буфера обміну для будь-якої з пропозицій, згаданих тут, щоб працювати. Шахта не була налаштована таким чином на Mac OS X за замовчуванням, і мені довелося відновити vim. Скористайтеся цією командою, щоб дізнатися, чи є у вас це чи ні vim --version | grep 'clipboard'. +clipboardозначає, що ви добрий, і пропозиції тут працюватимуть для вас, тоді як -clipboardозначає, що вам доведеться перекомпілювати і відновити vim.


15
Або замість того, щоб самостійно складати, ви можете встановити пакет vim, який вже був побудований із підтримкою буфера обміну. На OS X, Homebrew має це: brew install vim. У Ubuntu ви можете користуватися sudo apt-get install vim-gnome. В інших дистрибутивах Linux (не GNOME) ви можете скоріше встановити vim-gtkабо vim-athena.
Ніл Трафт

3
Дякую, в Arch Linux мені довелося видалити vimта встановити gvim wiki.archlinux.org/index.php/Vim#Installation
michalzuber

Ваші відповіді пояснюють, чому янк не працює з буфером обміну, тільки з вашою інформацією я міг би зробити кращий пошук в Google і змусити його легко працювати. А зараз це працює. Було б краще, якщо ви також включите @NeilTraft коментар до своєї відповіді, щоб людям не потрібно було шукати Google.
Яна Агун Сісванто

На Mac, одразу після того, як brew install vimя додав set clipboard=unnamedу .vimrc. Запустити source ~/.vimrcв командному рядку. У .bash_profile я додав alias vim="/usr/local/bin/vim"потім запустіть source ~/.bash_profile. Тепер у vim просто використовуйте yта pкопіюйте / вставляйте
Дмитро

59

Підбиття підсумків та полегшення для новачків,

Щоб скопіювати поточний рядок у командному режимі:

"*yy

Щоб скопіювати весь файл / буфер, в командному режимі спочатку перейдіть до початку через gg, а потім введіть

"*yG

Як зазначалося, це вимагає +clipboardз vim --version, які вказують на підтримку буфера обміну, -clipboardозначає ні.


1
"*5yyкаже, 5 lines yankedале нічого в буфері обміну? os / x.
javadba

2
Так, я перевірив + буфер обміну
javadba

nnoremap <leader>c "* у роботі .vimrcпрацює цілком як "копія" сортів, з подальшим рухом захопити текстовий об'єкт, який ви хочете скопіювати, в буфер обміну ОС.
cpk

Дякую, ви пояснили це саме так, як мені було потрібно.
Симен Тіммерманс

3
Я встановив , vim-gtkщоб включити -clipboardв +clipboard, ніж "+yyпрацює.
Lai32290

30

Якщо ви використовуєте vim в MAC OSX, він, на жаль, поставляється зі старшою версією, і не відповідає варіантам буфера обміну. На щастя, домашній пиріг легко вирішить цю проблему.

встановити vim:

brew install vim

встановити gui verion vim:

brew install macvim

перезапустіть термінал, щоб набути чинності.


додайте наступний рядок до ~ / .vimrc
set clipboard=unnamed

тепер ви можете скопіювати рядок у vim з yyі вставити його на загальну систему.



Оновлений метод :

Я ніколи не був задоволений набором буфера обміну роками. Найбільшим недоліком є ​​те, що він зіпсує історію буфера обміну, навіть коли ви використовуєте xдля видалення. Ось краще та елегантніше рішення.

  1. Скопіюйте текст [діапазон] vim у буфер обміну системи. (Примітка: використовуйте vабо Vспочатку виберіть діапазон, а потім введіть двокрапка , :щоб активувати команду Ex):
    :[line-range]yank +
    наприклад,
    :5,10y * (копію / смикати рядки 5-10 в системному буфері *регістр)

  2. Вставте вміст із системного буфера обміну в vim у новому рядку:
    :put +

Примітка:

  1. Якщо ви виберете діапазон слів, вищезгадане не вийде. використовуйте "* y або " + y, щоб зберегти цей візуальний блок у буфер обміну. Однак це важко набрати, я все ще думаю про альтернативи.
  2. : help "* або : help * + для отримання додаткової інформації
  3. brew info vimзможе побачити інші параметри встановлення vim. У нас немає інших варіантів.

--with-override-system-vimслід бути--with-override-system-vi
maffo

Я хотів би спробувати це, щоб не встановлювати багато матеріалів Xorg на мінімальних системах, але мені щось не вистачає. Після вибору в режимі v, а потім натискання ":" я отримую команду "Не редактор [діапазон] yank +".
jeremyjjbrown

29

Для Ubuntu - липень 2018 року

Використовуйте регістр "+ для копіювання в буфер обміну системи (тобто " + y замість y ).

Так само ви можете вставити з "+, щоб отримати текст із буфера обміну системи (тобто " + p замість p ).

Ви також повинні переконатися, що vim складено з підтримкою буфера обміну. Спробуйте:

vim --version | grep .xterm_clipboard -o 

а якщо це -xterm_clipboard (префікс мінус), то ви цього не робите маєте підтримку.

Ось кілька інструкцій щодо заміни робочою версією vim, яка має підтримку буфера обміну.

  • $ sudo apt - отримати vim очищення
  • $ sudo apt-get autoremove (видаляє будь-які сторонні пакети залежності від vim із системи)
  • $ sudo apt-get install vim-gnome

Перевірте ще раз, vim --version | grep .xterm_clipboard -oі ви можете переконатися, що буфер обміну доступний (тобто. + Xterm_clipboard )

Удачі.


3
Ти зробив мій день, а може, мій місяць. Протягом багатьох років, коли працював з буфером Vim на Ubuntu, це дивовижне відчуття. arcseldon, дякую !!
evanrmurphy

Крім того, що було описано вище, мені довелося вкласти set clipboard=unnamedplusу свій .vimrcфайл, щоб янк працював. Я використовую Ubuntu 18.04.
Ілля

23

Я не зміг скопіювати в систему буфера обміну, оскільки це було у моєму файлі ~ / .vimrc:

 if has('mouse')
   set mouse=a
 endif

Але якщо ви додасте цей рядок далі, це дозволить вам просто Ctrl+c отримати все, що ви вибрали, у свій буфер обміну.

vmap <C-c> "+y

Оригінальна дискусія та додаткові відомості: Скопіюйте текст із vim із встановленою мишею = увімкнено


3
Я не додав рядок до свого .vimrc, але надане вами посилання було дуже корисним. Якщо ви утримуєте SHIFT під час вибору тексту vim, ви зможете скопіювати текст, не входячи у візуальний режим. Тож спасибі та +1.
Стефан ван ден Аккер

Трюковий зсув - це те, що мені було потрібно. Також добре працює з такими редакторами, як термінатор, які використовують Ctrl + Shift + c для копіювання під час запиту, що я спробував спочатку. У мене був -xterm_clipboard, встановлений з vim.
Андерс Ельмгрен

18

рішенням для мене було встановити додатковий vim, у якому включена опція буфера обміну: 

sudo apt-get install vim-gnome

3
Це мені довелося зробити для Ubuntu 16.04. Я пробував інші пропозиції без успіху. Це було найпростіше, і я зробив те, що я очікував з "+ у."
Стівен Екхофф

Це працює як шарм без будь-яких змін vimrc! досі діє в Ubuntu 16.04
makerj

"+yПропозиція працював тільки з vim-gnome. Використання Linux Mint 18.2.
Самаурса

14

Якщо ви використовуєте GVim, ви також можете set guioptions+=a. Це призведе до автоматичного копіювання в буфер тексту, який ви виділяєте у візуальному режимі.
Недолік: Зауважте, що досвідчені менеджери буфера обміну (з історією) отримають у цьому випадку всю вашу історію вибору ...


13

Відповіді ви можете знайти тут Arch Wiki

Для Linux: Перш за все, потрібно включити буфер обміну у вашій версії vim, встановивши gvim.


Далі ви повинні помістити цей рядок у свій .vimrcфайл.

set clipboard=unnamedplus


+1, був здивований, що цей крок зараз необхідний. У всій моїй попередній установці Arch мені цього не довелося робити.
Костянтинос

також працював у ubuntu 18.04 і працює в tmux. Дякую!
Джеймс Кляйн

10

Якщо ваш vim буде складено без +xterm_clipboardваріанту, як він є за замовчуванням у Debian, і, мабуть, Ubuntu, ви можете передати вибір або весь буфер до зовнішньої програми, яка обробляє буфер обміну робочого столу. Для xclip(яку, можливо, вам потрібно буде встановити раніше), буде команда:w !xclip -sel clip


1
Дякую за це - він не працював на Ubuntu (тому підтвердження вашої здогадки про Ubuntu є правильним) протягом століть, і я не знав чому. Тепер я бачу -xterm_clipboardв прапорах, показаних, коли я vim --version.
jamesc

Це допомогло мені знайти гарне джерело підтримки буфера обміну: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc

9

In vim під терміналом ubuntu,

натисніть, shift + drag mouseщоб вибрати текст in vim, а потімctrl + shift + c на терміналі

потім ctrl + vна іншому редакторі


3
Це працює, щоб вибрати лише те, що є візуальним у vim, що робити, якщо ви хочете вибрати весь файл?
Гереп

@Gerep цей метод не працює для всього вибору файлів. добре вибрати розділ тексту лише на терміналі vim та там, де текст відображається на екрані терміналу.
Supawat Pusavanno

1
Це копіює номери рядків, межі буфера розбиття та все, що видно, а не лише текст / код.
Зельфір Кальтшталь

9

Якщо у вас є xclip, простий спосіб копіювання тексту у буфер обміну полягає в наступному:

  1. Текст, який потрібно скопіювати. (y команда in vanilla vim)
  2. Введіть :call system("xclip -selection clipboard", @")

:call system()виконує команду терміналу. Потрібно два аргументи, перший - команда, другий - що подати до цієї команди. Наприклад, :echom system("head -1", "Hello\nWorld")повертається Hello (З деякими накладками). echom повертає результат команди, дзвінок не робить.

xclip -selection clipboard просто копіює текст у буфер обміну системи на відміну від буфера обміну X за замовчуванням (Доступ до середньої кнопки Moue).

@"повертає останній вирваний текст. "- це регістр за замовчуванням, але ви можете використовувати будь-який регістр. Щоб переглянути вміст усіх регістрів, введіть :registers.


2
Це більш надійне, воно працює навіть тоді, коли vim не відповідає підтримці буфера обміну та будь-якій ОС. Наприклад, на Mac працює :call system("pbcopy",@"). Можна прив’язати цю команду до ключа.
ilija139

це добре працює, але чи можу я помістити його у свій vimrc, чи він спрацює. Це не працює для мене.
thenakulchawla

4

Можливо, комусь це стане в нагоді. Я хотів залишитися незалежним від буфера обміну X, і все-таки зможу скопіювати та вставити деякий текст між двома запущеними вими. Цей невеликий код зберігає вибраний текст у файлі temp.txt для копіювання. Вставте код нижче у свій .vimrc. Використовуйте CTRL-c CTRL-v для виконання завдання.

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

noremap: r! cat ~ / temp.txt


4
  1. Покладіть set clipboard=unnamedу своє vimrc.
  2. Виберіть, що потрібно скопіювати в Visualрежимі (Натисніть v, щоб ввести).
  3. Поверніться до Normalрежиму (Натисніть клавішу Esc [esc]), натисніть y, щоб скопіювати.
  4. Якщо ви хочете вставити щось із буфера обміну ОС, натисніть p / P у Normalрежимі Vim .

4

Я новичок Vim, але, щоб скопіювати весь текст у системний буфер обміну (наприклад, якщо ви хочете вставити його в текстовий процесор чи інший текстовий редактор, наприклад, gedit, клавіатура миші тощо ...), у звичайному режимі:

ggVGy

або, простіше кажучи:

:% у

Як було запропоновано, я також встановив vim-gtk та put

встановити буфер обміну = без імені

по-моєму .vimrc

і все працює добре

Якщо ви хочете скопіювати лише частину тексту, використовуйте режим візуалізації (v) , виберіть текст, який потрібно скопіювати, і натисніть y .

Нарешті, я пропоную програму буфера обміну, як Clipman (мій улюблений), Clipit, Parcellite або подібне.

(Я використовую vim 8.0 в Debian Stretch Xfce)

ЗАПРОШУЙ МЕНЕ МОЄМУ АНГЛІЙСЬКУ! :-)


4

Ця відповідь характерна для користувачів MAC.

VIM за замовчуванням, доступний для MAC, не ввімкнено, якщо включена опція буфера обміну. Вам потрібна ця опція для доступу до буфера обміну системи.

Щоб перевірити, чи увімкнено цей vim, скористайтеся командою нижче

vim --version

В результаті ви повинні мати +clipboard. Якщо це так -clipboard, то у вашого VIM НЕ є можливість отримати доступ до системного буфера обміну.

Вам потрібно ЗРОБИТИ та встановити свій VIM з потрібною вами опцією. Далі йдуть команди.

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

Наведене вище встановить останній VIM з +clipboardувімкненою опцією .

Тепер потрібно встановити буфер обміну системи. Додайте наступний рядок до~/.vimrc

set clipboard=unnamed

Тепер ви можете витягнути текст до системного буфера обміну. Нижче описано, як дбати.

  1. У командному режимі vim press vце переключить вас у режим VISUAL.
  2. Перемістіть курсор навколо, щоб вибрати текст або рядки, які потрібно скопіювати.
  3. Press y, це скопіює вибраний текст у буфер обміну.
  4. Перейдіть до будь-якого зовнішнього додатка та CMD + vвставте.

Я використовую MACBook Pro з macOS Mojave і вищезазначені роботи в ньому.


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.


3

Я боровся з цим протягом багатьох місяців на MacOsX, використовуючи комбінації клавіш. Я знаю, питання не стосується використання шортних клавіатур. Але це може допомогти комусь із таким же клопотом.

Я виявив це, якщо зняти прапорець:

Перегляд -> Дозволити звітування про миші

з меню «Термінал» ви зможете скопіювати в буфер обміну за допомогою

command + c

знову.


2

Я написав простий рядок у своєму .vimrc, щоб копія працювала. Сподіваюся, що це комусь допоможе. Мій vim не встановлений із підтримкою буфера обміну, на жаль, тому жодна з цих пропозицій не працювала для мене. В основному, вставте цей рядок у свій .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Якщо ви хочете прочитати деталі про те, що це робить, ви можете прочитати про це в моєму блозі


1
Покупця остерігайтесь. На mac це має дивні ефекти.
азатар

це, здається, не копіює нічого у буфер обміну при використанні за інструкціями (на Linux ubuntu 16.04, не підтримується буфер обміну), і якщо декілька файлів буде відкрито в сесії vim, закриє вкладку, на якій були здійснені дії (візуальний вибір та Cc ).
калорійник

2

Для деяких міжнародних клавіатур вам може знадобитися натиснути "+, Spaceщоб отримати ".

Тож у такому випадку вам доведеться натискати "Space+yабо"Space*y


2

Якщо ви не хочете використовувати будь-який графічний інтерфейс для vim, і ви віддаєте перевагу просто триматися за допомогою термінального емулятора, може бути набагато простіший підхід до цієї проблеми. Замість того, щоб використовувати yank або щось подібне, спочатку подивіться на документацію терміналу, який ви використовуєте. Я боровся з тією ж проблемою (намагаюся використовувати + буфер обміну і xclip тощо), і врешті-решт виявилося, що в моєму емуляторі терміналу достатньо просто натиснути shift і вибрати будь-який текст, який потрібно скопіювати. Це воно. Досить просто і не потрібно возитися з конфігурацією. (Я використовую urxvt до речі).


1

для OSX, як і 10342 відповідей, викладених вище, вам потрібно переконатися, що vim підтримує функцію буфера обміну, сказав, що той, який постачається за допомогою OSX, не підтримує буфер обміну, і якщо ви запустите brew install vim він буде працювати.

За винятком того, що запуск vi все ще змусить запустити попередньо встановлену версію OSX, а не ту, яку ви встановили з варіння.

Щоб вирішити це, я просто псевдонімував свою команду vim версії заварити, а не OSX за замовчуванням:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

і зараз я золотий


1

Моє рішення було поставити наступний рядок для .vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

Сценарій копіює вибраний рядок (через візуальний режим) або вміст файлу (якщо такий не вибраний) у буфер обміну за допомогою Ctrl + y. Я використовую Manjaro Linux, якщо це має значення.


1

Я на mac osx (10.15.3) і новий vim. Я вважаю це таким неприємним, і всі відповіді на тут занадто складні та / або не стосуються моєї ситуації. Я закінчив цю роботу двома способами:

  1. ключове відображення, що використовує pbcopy : працює над старою версією vim, яка постачається з mac.

    Додати vmap '' :w !pbcopy<CR><CR>до свого ~ / .vimrc
    Тепер ви можете візуально вибрати та натиснути ''(два апострофи), щоб скопіювати у буфер обміну

  2. Встановіть новішу версію vim, щоб я міг отримати доступ до рішення, найбільш рекомендованого в інших відповідях:

    brew install vim
    alias vim=/usr/local/bin/vim(слід додати це до ~ / .bashrc або подібного)
    Тепер ви можете візуально вибрати та натиснути, "+yyщоб скопіювати у буфер обміну


дуже приємне рішення!
ABD

0

selectingза допомогою mouseіright-click copy працював у моєму випадку.

Я не хотів, щоб рядки включали номери, тому я :set nonumberраніше copying.


як ти можеш це зробити в nerdTree
джи-рух

Це не має нічого спільного з vim і є виключно термінальною копією до (X) буфера обміну.
Карло Вуд

Я не впевнений @ ji-ruh
Акаш

0

Нічого вище не працювало для мене на моєму ноутбуці Windows.

Ctrl+ Cбуло добре для копіювання .., але мені потрібно було Shift+Insert вставити!

(Важлива причина завжди мати ноутбук, на якому Insertзавжди можна отримати доступ, не натискаючи вторинну клавішу)


0

Shift+ Ctrl+ C якщо ви перебуваєте в графічному режимі Linux, але спочатку потрібно вибрати те, що потрібно скопіювати.

введіть тут опис зображення

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