Есть ли способ скопировать все строки из файла в буфер обмена в редакторе 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