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


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в новом файле.


5
Хотя это не совсем ответ на вопрос, это был ответ на мой . Спасибо.

2
Мне нужно добавить ноль, чтобы вставить его в начало файла::0r filename
Стефан ван ден Аккер



6

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


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



3

В OSX:

ggVG
!tee >(pbcopy)

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

ggVG
:w !pbcopy

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


1

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

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


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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.