Янкировать весь файл

126

Я часто пишу что-то в gVim, а затем мне нужно скопировать это в другое приложение.

Есть ли простой способ восстановить весь файл? Я обычно делаю что-то подобное

ggVG"+y

(Вверх, режим визуальной линии, вниз, дергать)

Но есть ли лучший способ, который я упускаю?

Чад Берч
источник

Ответы:

202

Использую следующую инструкцию: :%y+

Люк Эрмитт
источник
6
Что делает +, пожалуйста?
VoY
5
Это регистр, относящийся к буферу обмена. Тот самый, который ОП использовал в своем вопросе. => :h :y,:h registers
Люк Эрмитт
5
@VoY: Вам необходимо скомпилировать свойство Clipboard в Vim, чтобы получить этот рабочий "+ буфер обмена". Это означает: «все переносится во внешний буфер обмена в каком-то оконном менеджере». Это свойство не является де-факто, но оно поставляется с некоторыми графическими vim-приложениями, очевидно, де-факто, такими как gVim. Пожалуйста, поправьте меня, если я ошибаюсь (только что заметил эту вещь, когда пришлось использовать yank в Windows gVim, поэтому я, конечно, не могу быть полностью уверен, но я верю, что это свойство).
чч
8
Если в ubuntu 11.04+ регистр + не работает, попробуйте установить gVim (apt-get install vim-gnome). Это также предоставит свойство + clipboard в терминальной версии vim
adharris
3
Раньше я это делал, gg"+YGно мне это никогда не нравилось, потому что я потерял исходную линию, на которой был. Это потрясающе!
verboze
57

ggyG (перейти к первой строке, перейти к последней строке)

Изменить: Ах, системный буфер обмена. Точно не скатывается с пальцев, но:gg"+yG

Анника Бэкстрем
источник
1
Спасибо, это работает для меня, а не:% y +. Но как мне вставить его на localhost с пульта? :)
valk
1
Итак, в основном эта команда поднимается в верхнюю часть документа и что-то делает, рывком в нижнюю часть документа? Что здесь «делает?»
geoyws
1
@Geoyws "говорит, что вы хотите работать с реестром. "+это регистр, связанный с системным буфером обмена. "+yGперетаскивает все до конца файла в этот регистр. :help "+
Анника Бэкстрем
15

Рабочее решение в старом vi находится :r filenameв новом файле.

mouviciel
источник
5
Хотя это не совсем ответ на вопрос, это был ответ на мой . Спасибо.
2
Мне нужно добавить ноль, чтобы вставить его в начало файла::0r filename
Стефан ван ден Аккер
12

Другой метод такой:

ggyG

Идите наверх и дерните вниз.

Глен Солсберри
источник
stackoverflow.com/a/829944/6723250 имеет ту же информацию с некоторыми более подробными сведениями
Xerus
6

ggyG

(Идите вверх, дерните вниз)

Франсиско Канедо
источник
stackoverflow.com/a/829944/6723250 имеет ту же информацию с некоторыми более подробными сведениями
Xerus
6

Я использую следующую команду: :%y.

Cheng
источник
... не в разных окнах в оконном менеджере. + в конце переносит его во внешний буфер обмена (видимо, что опера пытается сделать)
чхх
4
:0,$ y

Я не знаю, какой путь проще.

Менинкс - メ ネ ン ッ ク ス
источник
3

Или просто в вашем .vimrc:

nmap <silent> <F5> ggVG"+y

Так что вы можете использовать всего одну клавишу :)

доктор Ганнибал Лектер
источник
3

В OSX:

ggVG
!tee >(pbcopy)

Что мне кажется лучше, чем:

ggVG
:w !pbcopy

Поскольку он не отображает подсказку: " Press ENTER or type command to continue"

Джеймс Скривен
источник
1

:%yбез +работает во всей системе, если вы используете neo-vim (nvim).

Это позволяет нам не растягивать пальцы +- фактически делая этот ярлык лучше, чем ggyG.

LearnOPhile
источник
0

В зависимости от того, как часто вы это делаете, просто сопоставьте ключ для этого и, при необходимости, добавьте в vimrc

:nnoremap <F5> :%y

или

:nnoremap <leader><whatever> :%y

или любой другой ключ, который, как вы знаете, безопасен и самый быстрый - затем добавьте в источник сопоставлений или что-то еще. Преимущество этого ggyGзаключается в том, что он не перемещает курсор (быстрее), и чтобы сохранить позицию курсора, вам нужно будет добавить<Ctrl-o><Ctrl-o>

Люди часто забывают, что команды основаны на сеансах, если только в vimrc. Я часто знаю, когда собираюсь сделать много чего, но по умолчанию это не нужно, и просто:[mode]remap <whatever> <whatever>

Я могу закрыть и снова открыть vim, если мне нужно.

Если <Ctrl-A><Ctrl-C>работает для вас, то вы используете mswin.vim в своем источнике и теряете возможности операций увеличения <Ctrl-a>и уменьшения <Ctrl-x>(среди прочего). Я начал в Windows и давно перестал использовать mswin.vim. Я лично считаю, что лучше всего правильно нащупать Vim, а затем добавить костыли, которые вам действительно нужны: P

Alex
источник
2
Добро пожаловать в Stackoverflow. Редактор поддерживает форматирование , поэтому рекомендуется заключить примеры кода (например, используемые вами команды) в обратные кавычки ( `) или блоки кода.
Ян Кундрат,
-1

Он грязный, но вам совсем не нужно использовать клавишу Shift и всего 3 разные клавиши, которые могут быть быстрее:

gg1111yy

(Предполагая, что файл короче 1111 строк)

Ричард
источник
-2

В Windows я часто просто нажимаю CTRL-A, CTRL-C, чтобы скопировать все в буфер обмена Windows ... Нет ничего проще!

Я использую стандартный gvim 7.1 с сайта ...

(Кстати: также работает на моем Mac с MacVim и этой забавной клавишей Mac + A, клавишей Mac + C)

Дарен Томас
источник
1
Windows gvim добавляет несколько дополнительных ярлыков, которых нет в других версиях, чтобы попытаться сделать его лучше для пользователей Windows. ctrl + a, ctrl + c - два примера таких.
davr
9
Мм, ctrl-c имеет совершенно другое значение для пользователя терминала.
Xiong Chiamiov
конечно, но в окнах делайте то же, что и в окнах :) Просто скажу, что gvim и MacVim соблюдают стандартные ярлыки буфера обмена платформ - в их использовании тоже нет ничего плохого ....
Дарен Томас
4
Можно вообще не использовать vim, если вы хотите использовать такие ярлыки.
VoY
1
CTRL-A увеличивает число под курсором.
Alexcp