VI Редактор: Yank весь файл в буфер обмена (специфичный для OS X)

Есть ли способ скопировать все строки из файла в буфер обмена в редакторе VI. Я пробовал *yG, +yG, "+yG и :%y+ из предыдущих сообщений в SO, но ничего не работает в OS X.

Ответ 1

По умолчанию Vim, поставляемый с Mac OS X, /usr/bin/vi[m], не скомпилирован с поддержкой буфера обмена.

У вас есть три варианта:

  1. используйте pbcopy из командной строки, не используя Vim

    $ cat filename | pbcopy
    
  2. использовать pbcopy от Vim

    :%w !pbcopy
    
  3. получить свой собственный Vim с поддержкой буфера обмена

    Вы можете сделать это через MacPorts или Homebrew, загрузив MacVim или создав исходный код.

Также правильным способом использования определенного регистра с y является "{register}y.

См. $ man pbcopy в вашем терминале и :help clipboard и :help ! в Вим.

Ответ 2

G просто означает "перейдите к концу файла", и вам нужны котировки до * или + чтобы сделать их эффективными в качестве регистров буфера обмена. Вы ищете нечто большее, чем gg"*yG что означает:

gg - перейти в начало файла

"* - используйте * регистр

y - начинать

G - перейти к нижней части файла

или вы можете использовать :!cat % | pbcopy :!cat % | pbcopy который не похож на тонкие решения, предлагаемые romainl.

Ответ 3

vim --version | grep clipboard, если вы видите "-clipboard", вы этого не сделаете. Ваш vim не поддерживает его. Вам нужно перекомпилировать исходный код.

компилировать

$./configure \ --enable-gui=auto --with-features=huge --with-x
$ make && sudo make install