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

есть ли способ скопировать все строки из открытого файла в буфер обмена в Редактор VI. Я пытался!--1-->yG но он не использует буфер обмена для хранения этих строк.

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

22 ответов


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

gg"*yG

объяснение:

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

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

:%y+

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

пояснение:

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

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


на Mac

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

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

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


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

и gg"+yG скопирует весь файл.

аналогично, чтобы вставить из буфера обмена,"+p


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


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

ggVGy

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

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

:%!xclip -sel clip
u

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

sudo apt-get install xclip

На Ubuntu 12

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

sudo apt-get install vim-gnome

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

-> установка ВИМ-гном пакет на Ubuntu 12 также установил консольную версию vim, которая имеет это опция включена (указывается + перед флагом xterm_clipboard)

На Arch Linux

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


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

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


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


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

  • CTRLA означает " отметить весь файл.
  • CTRLC означает "копировать выделенное.
  • ESC означает " De-select, поэтому следующее нажатие клавиши не заменяет весь файл : -)

в Ubuntu terminal (Gnome), по крайней мере, стандартная копия также работает (CTRLSHIFTC, хотя, похоже, нет стандартной комбинации клавиш для select all (кроме ALTE следовал по A).


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


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


GVim выступает:

:set go=a

ggVG

посмотреть :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's 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's global selection unless explicitly told to
 by a yank or delete operation for the "* register.
 The same applies to the modeless selection.

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

функция автоматического копирования gVim-anything-highlighted-to-the-clipboard проще всего или использовать внешнюю программу через :!

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

:%!putclip
u

может быть, Ubuntu имеет приложение CLI, такое как putclip??


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

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

  1. gg чтобы получить курсор на первой строке
  2. вставить 78 + y --> Он тянет 78 строк ниже вашего курсора и текущей строки

если ваши пальцы по умолчанию 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>.


вот команда Карты, чтобы выбрать все в буфер обмена с помощью CTRL+a:

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

добавить его в свой .vimrc и ты можешь идти...


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

y G 

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

p

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

d G

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

  1. измените настройки вашего сеанса шпатлевки, перейдите в журнал и измените его на"печатные символы". Установите файл журнала
  2. сделать кошку из соответствующего файла
  3. перейдите к файлу, который вы установили в шаге #1, и у вас будет содержимое в файле журнала.

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


Я создал функцию для выполнения этого действия, поместите ее на свой ~/.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. Для информации mor см.: :h unnamed.

здесь дополнительная информация о vim wikia.


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