Скопировать все строки в буфер обмена

Есть ли способ скопировать все строки из открытого файла в буфер обмена в редакторе VI. Я пробовал y G, но не использовал буфер обмена для хранения этих строк.

Так возможно?

Ответ 1

Вы должны вытянуть текст в регистры * или +:

g g " * y G

Объяснение:

  • gg чтобы получить курсор на первый символ файла
  • "*y чтобы запустить команду yank для регистра * с первой строки, пока...
  • G чтобы перейти в конец файла

Ответ 2

Использование:

: % y +

дергать все линии.

Объяснение:

  • % для ссылки на следующую команду для работы на всех линиях
  • y дергать эти строки
  • + скопировать в системный буфер обмена

NB. В Windows + и * эквивалентны, смотрите этот ответ.

Ответ 3

на Mac

  • скопировать выбранную часть: визуально выбрать текст (тип v или v в обычном режиме mode) и введите :w !pbcopy

  • скопировать весь файл :%w !pbcopy

  • прошлое из буфера обмена :r !pbpaste

Ответ 4

Буфер обмена представляет собой буфер +. Чтобы скопировать в буфер обмена, сделайте " + y и [движение].

Итак, g g " + y g скопирует весь файл.

Аналогично, для вставки из буфера обмена " + p

Ответ 5

Другой простой способ скопировать весь файл, если у вас возникли проблемы с использованием VI, - это просто ввести "имя файла cat". Он будет отображать файл на экране, а затем вы можете просто прокручивать вверх и вниз и копировать/вставлять.

Ответ 6

Это то, что я делаю, чтобы выдернуть весь файл:

ggVGy

Ответ 7

(в ответ на @rshdev и избежать необходимости перекомпилировать vim с + xterm_clipboard на @nelstrom в комментариях к OP)

есть программа, называемая xclip, которая работает как putclip на Ubuntu 11:

:%!xclip -sel clip
u

он не установлен по умолчанию. для установки, используйте:

sudo apt-get install xclip

Ответ 8

На Ubuntu 12

Вы можете попробовать установить пакет vim-gnome:

sudo apt-get install vim-gnome

Я попробовал это, потому что vim --version сказал мне, что у него будет отключен флаг xterm_clipboard (обозначенный -), который необходим для использования функциональности буфера обмена.

→ установка пакета vim-gnome в Ubuntu 12 также установила консольную версию vim, у которой включена эта опция (обозначается знаком + перед флагом xterm_clipboard)

На Arch Linux

Вы можете установить vim-clipboard по той же причине.

Ответ 9

Вы можете использовать команду "кошка", чтобы открыть файл и использовать мышь, чтобы скопировать

Ответ 10

Если вы используете Vim в визуальном режиме, стандартные клавиши вырезания и вставки также применяются, по крайней мере, к Windows.

  • CTRL A означает "Отметить весь файл.
  • CTRL C означает "Скопировать выделение.
  • ESC означает "Отменить выбор, поэтому следующее нажатие клавиши не заменяет весь файл: -)

По крайней мере, в терминале Ubuntu (Gnome) стандартная копия также работает (CTRL SHIFT C), хотя для select all нет стандартного сочетания клавиш (кроме ALT E, за которым следует A).

Ответ 11

вы можете нажать gg, чтобы найти ваш курсор в начале файла, а затем нажмите yG, чтобы скопировать весь контент с начала на конец (G) на буфер. Хорошая удача!

Ответ 12

Я попробовал несколько команд, упомянутых выше. Никто не работал. Затем я овладел самым простым из всех.

Шаг 1: vi <filename>
Шаг 2: Щелкните правой кнопкой мыши по строке заголовка окна Putty
Шаг 3: Выберите "Очистить прокрутку" (чтобы не копировать остальную часть сеанса SSH)
Шаг 4: Щелкните правой кнопкой мыши еще раз и выберите "Скопировать все в буфер обмена".

Ответ 13

GVim:

:set go=a

g g V g

См. :help go-a:

'a' Autoselect:  If present, then whenever VISUAL mode is started,
 or the Visual area extended, Vim tries to become the owner of
 the windowing system global selection.  This means that the
 Visually highlighted text is available for pasting into other
 applications as well as into Vim itself.  When the Visual mode
 ends, possibly due to an operation on the text, or when an
 application wants to paste the selection, the highlighted text
 is automatically yanked into the "* selection register.
 Thus the selection is still available for pasting into other
 applications after the VISUAL mode has ended.
     If not present, then Vim won't become the owner of the
 windowing system global selection unless explicitly told to
 by a yank or delete operation for the "* register.
 The same applies to the modeless selection.

Ответ 14

:%y a Янки все содержимое в буфер vim, Нажатие p в командном режиме будет вставлять выдернутое содержимое после строки, в которой находится ваш курсор.

Ответ 15

В Bill Joy vi не было понятия "буфер обмена", поэтому я не думаю, что есть встроенный способ сделать это.

gVim automatic copy-anything-highlight-to-the-clipboard лучше всего использовать или использовать внешнюю программу через:!

Для Cygwin vim я использую

:%!putclip
u

Возможно, Ubuntu имеет приложение CLI, такое как putclip??

Ответ 16

Ну, все эти подходы интересны, однако, как ленивый программист, я использую yank all line, используя комбинацию числа + y

например, у вас есть файл исходного кода с общим количеством 78 строк, вы можете сделать следующее:

  • gg, чтобы получить курсор в первой строке
  • insert 78 + y → он дергает 78 строк под вашим курсором и текущей строкой

Ответ 17

Если ваши пальцы по умолчанию равны CTRL-A CTRL-C, попробуйте сопоставления из $VIMRUNTIME/mswin.vim.

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

Я их сопоставил с <Leader><C-a> и <Leader><C-c>.

Ответ 18

Скопируйте весь файл внутри vim или его вкладки

y G 

затем перейдите на вкладку и вставьте

p

и разрезать весь файл

d G

Ответ 19

Здесь команда map, чтобы выбрать все в буфер обмена, используя CTRL + a:

"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q

Добавьте его в свой .vimrc, и вы хорошо пойдете...

Ответ 20

Я знаю, что десять лет на это нужно решить, но первые два ответа у меня не сработали, поэтому я продолжал копать. На Redhat (удаленный сервер) - Windows 10 (локальный компьютер), если вы не можете выделить все целиком с помощью мыши, вы застряли, потому что обычные копии не работают между буфером обмена удаленного и локального компьютера.

Итак, чтобы скопировать на удаленный Linux и вставить в локальную Windows, укажите основной буфер с помощью * и сделайте хороший двойной рывок

Используйте g g " * y y.

Ответ 21

Я добавил следующую строку в мой .vimrc

nnoremap <F5> :%y+<CR>

Это позволяет мне копировать весь текст в Vim в буфер обмена, нажав F5 (в командном режиме).

Ответ 22

Скопировать все по Visual:

g g v G y

Ответ 23

Я не мог копировать файлы, используя ответы выше, но у меня есть замазка, и я нашел обходное решение для Quora.

  • Измените настройки своего сеанса PuTTY, перейдите к регистрации и измените его на "печатные символы". Задайте файл журнала
  • Сделайте кошку соответствующего файла
  • Перейдите к файлу, указанному на шаге №1, и у вас будет свой контент в файле журнала.

Примечание: он копирует все печатные символы этого сеанса в файл журнала, поэтому в конечном итоге он станет большим. В этом случае удалите файл журнала и скопируйте целевой файл, чтобы получить содержимое определенного файла, скопированное на вашем компьютере.

Ответ 24

Я создал функцию для выполнения этого действия, поместите ее в ~/.vimrc.

fun! CopyBufferToClipboard()
    %y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS: Если вы используете neovim, вам также нужен менеджер буфера обмена, такой как xclip. для получения дополнительной информации введите neovim :h checkhealth

Также важно упомянуть, что не всегда простой y будет копировать в буфер обмена, чтобы каждый фид копирования + является "Регистром буфера обмена", пытается установить :set clipboard=unnamed,unnamedplus. Для более подробной информации см :h unnamed.

Здесь больше информации о vim wikia.

Ответ 25

Щелкните левой кнопкой мыши, перетащите область, которую хотите скопировать и отпустить. Код автоматически копируется в буфер обмена.