Есть ли способ скопировать все строки из файла в буфер обмена в редакторе VI. Я пробовал *yG, +yG, "+yG и :%y+ из предыдущих сообщений в SO, но ничего не работает в OS X.
VI Редактор: Yank весь файл в буфер обмена (специфичный для OS X)
Ответ 1
По умолчанию Vim, поставляемый с Mac OS X, /usr/bin/vi[m], не скомпилирован с поддержкой буфера обмена.
У вас есть три варианта:
-
используйте
pbcopyиз командной строки, не используя Vim$ cat filename | pbcopy -
использовать
pbcopyот Vim:%w !pbcopy -
получить свой собственный 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