Есть ли способ скопировать все строки из открытого файла в буфер обмена в редакторе VI. Я пробовал y G, но не использовал буфер обмена для хранения этих строк.
Так возможно?
Есть ли способ скопировать все строки из открытого файла в буфер обмена в редакторе VI. Я пробовал y G, но не использовал буфер обмена для хранения этих строк.
Так возможно?
Вы должны вытянуть текст в регистры *
или +
:
g g " * y G
Объяснение:
gg
чтобы получить курсор на первый символ файла"*y
чтобы запустить команду yank для регистра *
с первой строки, пока...G
чтобы перейти в конец файлаИспользование:
: % y +
дергать все линии.
Объяснение:
%
для ссылки на следующую команду для работы на всех линияхy
дергать эти строки+
скопировать в системный буфер обмена NB. В Windows +
и *
эквивалентны, смотрите этот ответ.
на Mac
скопировать выбранную часть: визуально выбрать текст (тип v
или v
в обычном режиме
mode) и введите :w !pbcopy
скопировать весь файл :%w !pbcopy
прошлое из буфера обмена :r !pbpaste
Буфер обмена представляет собой буфер +. Чтобы скопировать в буфер обмена, сделайте " + y и [движение].
Итак, g g " + y g скопирует весь файл.
Аналогично, для вставки из буфера обмена " + p
Другой простой способ скопировать весь файл, если у вас возникли проблемы с использованием VI, - это просто ввести "имя файла cat". Он будет отображать файл на экране, а затем вы можете просто прокручивать вверх и вниз и копировать/вставлять.
Это то, что я делаю, чтобы выдернуть весь файл:
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 (обозначенный -), который необходим для использования функциональности буфера обмена.
→ установка пакета vim-gnome в Ubuntu 12 также установила консольную версию vim, у которой включена эта опция (обозначается знаком + перед флагом xterm_clipboard)
На Arch Linux
Вы можете установить vim-clipboard
по той же причине.
Вы можете использовать команду "кошка", чтобы открыть файл и использовать мышь, чтобы скопировать
Если вы используете Vim в визуальном режиме, стандартные клавиши вырезания и вставки также применяются, по крайней мере, к Windows.
По крайней мере, в терминале Ubuntu (Gnome) стандартная копия также работает (CTRL SHIFT C), хотя для select all
нет стандартного сочетания клавиш (кроме ALT E, за которым следует A).
вы можете нажать gg, чтобы найти ваш курсор в начале файла, а затем нажмите yG, чтобы скопировать весь контент с начала на конец (G) на буфер. Хорошая удача!
Я попробовал несколько команд, упомянутых выше. Никто не работал. Затем я овладел самым простым из всех.
Шаг 1: vi <filename>
Шаг 2: Щелкните правой кнопкой мыши по строке заголовка окна Putty
Шаг 3: Выберите "Очистить прокрутку" (чтобы не копировать остальную часть сеанса SSH)
Шаг 4: Щелкните правой кнопкой мыши еще раз и выберите "Скопировать все в буфер обмена".
: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.
:%y a
Янки все содержимое в буфер vim,
Нажатие p
в командном режиме будет вставлять выдернутое содержимое после строки, в которой находится ваш курсор.
В Bill Joy vi не было понятия "буфер обмена", поэтому я не думаю, что есть встроенный способ сделать это.
gVim automatic copy-anything-highlight-to-the-clipboard лучше всего использовать или использовать внешнюю программу через:!
Для Cygwin vim я использую
:%!putclip
u
Возможно, Ubuntu имеет приложение CLI, такое как putclip??
Ну, все эти подходы интересны, однако, как ленивый программист, я использую yank all line, используя комбинацию числа + y
например, у вас есть файл исходного кода с общим количеством 78 строк, вы можете сделать следующее:
gg
, чтобы получить курсор в первой строке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>
.
Скопируйте весь файл внутри vim или его вкладки
y G
затем перейдите на вкладку и вставьте
p
и разрезать весь файл
d G
Здесь команда map, чтобы выбрать все в буфер обмена, используя CTRL + a:
"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q
Добавьте его в свой .vimrc, и вы хорошо пойдете...
Я знаю, что десять лет на это нужно решить, но первые два ответа у меня не сработали, поэтому я продолжал копать. На Redhat (удаленный сервер) - Windows 10 (локальный компьютер), если вы не можете выделить все целиком с помощью мыши, вы застряли, потому что обычные копии не работают между буфером обмена удаленного и локального компьютера.
Итак, чтобы скопировать на удаленный Linux и вставить в локальную Windows, укажите основной буфер с помощью * и сделайте хороший двойной рывок
Используйте g g " * y y.
Я добавил следующую строку в мой .vimrc
nnoremap <F5> :%y+<CR>
Это позволяет мне копировать весь текст в Vim в буфер обмена, нажав F5
(в командном режиме).
Скопировать все по Visual:
g g v G y
Я не мог копировать файлы, используя ответы выше, но у меня есть замазка, и я нашел обходное решение для Quora.
Примечание: он копирует все печатные символы этого сеанса в файл журнала, поэтому в конечном итоге он станет большим. В этом случае удалите файл журнала и скопируйте целевой файл, чтобы получить содержимое определенного файла, скопированное на вашем компьютере.
Я создал функцию для выполнения этого действия, поместите ее в ~/.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.
Щелкните левой кнопкой мыши, перетащите область, которую хотите скопировать и отпустить. Код автоматически копируется в буфер обмена.