it-swarm.com.ru

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

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

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

487
Xinus

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

gg"*yG

Объяснение:

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

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

:%y+

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

Объяснение:

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

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

612
Rook

на Mac

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

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

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

68
Brian

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

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

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

48
Tordek

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

33
Zack

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

ggVGy
25
EmilianoGNFNR

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

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

:%!xclip -sel clip
u

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

Sudo apt-get install xclip
10
Stew

На Ubuntu 12

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

Sudo apt-get install vim-gnome

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

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

На Arch Linux

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

9
Arch Linux Tux

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

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

5
Abhinav Deshpande

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

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

Под терминалом Ubuntu (Gnome) как минимум стандартная копия тоже работает (CTRLSHIFTC, хотя не существует стандартного сочетания клавиш для select all (кроме ALTE с последующим A).

5
paxdiablo

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

5
gameboy90

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

5
Luan Pham

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.
3
kev

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

3
Ma'moon

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

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

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

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

2
go2null

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

функция автоматического копирования gVim «все, что выделено в буфер обмена» является самой простой или использует внешнюю программу с помощью:!

Для Cygwin's Vim я использую 

:%!putclip
u

Может быть, в Ubuntu есть CLI-приложение типа putclip ??

2
rshdev

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

y G 

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

p

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

d G
2
Abdul Basit

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

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

Добавьте его к своему . Vimrc и все готово ...

1
jahroy

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

0
SergioAraujo

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

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

Использование gg"*yy,.

0
Lefty G Balogh

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

nnoremap <F5> :%y+<CR>

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

0
aks