Есть ли способ скопировать все строки из открытого файла в буфер обмена в редакторе VI. Я пытался, yGно он не использует буфер обмена для хранения этих строк.
Так возможно ли это?
vim
editor
keyboard-shortcuts
vi
Xinus
источник
источник
Ответы:
Вы должны вернуть текст в регистры
*
или :+
gg"*yG
Объяснение:
gg
чтобы получить курсор к первому символу файла"*y
запустить команду янки в реестр*
с первой строки, пока ...G
идти в конец файлаисточник
"
.:version
vim и найдите+xterm_clipboard
флаг. Если ему предшествует знак минус, у вас не будет этой функциональности. Если это так, вы можете скомпилировать vim самостоятельно или запустить gvim, который обычно включает эту функцию.Использование:
:%y+
дергать все линии.
Объяснение:
%
обратиться к следующей команде для работы на всех линияхy
дергать эти строки+
скопировать в системный буфер обменаNB : В Windows
+
и*
аналогичных см. Этот ответ .источник
:help
чтобы убедиться, что вы на самом деле в VIM.set clipboard=unnamed
, но тогда это работало отлично!E850: Invalid register name
:(на Mac
скопировать выбранную часть: визуально выделите текст (введите
v
илиV
в обычном режиме) и введите:w !pbcopy
скопировать весь файл
:%w !pbcopy
прошлое из буфера обмена
:r !pbpaste
источник
pbcopy
- это утилита для Mac. В Linuxxsel
может работать вместо этого илиclip
в Windows.:%w !pbcopy
прежнему работает, если файл длиннее, чем высота терминала.Буфер обмена является буфером +. Чтобы скопировать в буфер обмена, сделайте"+y и [движение].
Так, gg"+yG скопируем весь файл.
Точно так же, чтобы вставить из буфера обмена, "+p
источник
Другой простой способ скопировать весь файл, если у вас возникли проблемы с использованием VI, - просто набрать «cat filename». Он отобразит файл на экране, а затем вы можете просто прокрутить вверх и вниз и скопировать / вставить.
источник
:!cat %
. И скопировать содержимое файла программно в буфер обмена в Mac OS::!cat % | pbcopy
Вот что я делаю, чтобы вытащить весь файл:
источник
clipboard
набор, чтобы скопировать натянутый текст в+
хотя.Вы можете использовать команду "кошка", чтобы открыть файл и использовать мышь, чтобы скопировать
источник
reset
Терминал заранее, затем выберите все и скопируйте. Это работает черезssh
сессию.(в ответ на @rshdev, чтобы избежать необходимости перекомпилировать vim с + xterm_clipboard per @nelstrom в комментариях к OP)
В Ubuntu 11 есть программа xclip, которая работает как putclip:
он не установлен по умолчанию. установить, используйте:
источник
На Ubuntu 12
Вы можете попробовать установить
vim-gnome
пакет:Я попробовал это, потому что
vim --version
сказал мне, что у него будет отключен флаг xterm_clipboard (обозначенный - ), который необходим для использования функциональности буфера обмена.-> установка пакета vim-gnome в Ubuntu 12 также установила консольную версию vim, у которой включена эта опция (обозначается знаком + перед флагом xterm_clipboard)
На Arch Linux
Вы можете установить
vim-clipboard
по той же причине.Если вы запускаете neovim, то вам следует установить
xclip
(как описаноhelp clipboard-tool
)источник
Если вы используете Vim в визуальном режиме, стандартные клавиши вырезания и вставки также применяются, по крайней мере, в Windows.
Под терминалом Ubuntu (Gnome), по крайней мере, стандартная копия также работает ( CTRLSHIFTCхотя, кажется, нет стандартного сочетания клавиш для
select all
(кроме ALTEсопровождаемого A).источник
Вы можете нажать gg, чтобы найти курсор в начале файла, а затем нажать yG, чтобы скопировать весь контент от начала до конца (расположенный G) в буфер. Удачи!
источник
Я попробовал несколько команд, которые люди упоминали выше. Никто не работал. Тогда я достал самый простой из них.
Шаг 1:
vi <filename>
Шаг 2: Щелкните правой кнопкой мыши строку заголовка окна Putty.
Шаг 3: Выберите «Очистить прокрутку» (чтобы не копировать оставшуюся часть сеанса SSH).
Шаг 4: Снова щелкните правой кнопкой мыши и выберите «Копировать все в буфер обмена».
источник
Window > Settings > lines of scrollback
до 40000 (также доступно щелчком правой кнопкой мыши на строке заголовка). Это также помогает использоватьcat
вместо vi, поскольку это прокручивает весь текст.:%y a
Янкирует все содержимое в буфер vim. Нажатиеp
в командном режиме вставит восстановленное содержимое после строки, на которой в данный момент находится курсор.источник
GVim:
ggVG
Смотрите
:help go-a
:источник
Ну, все эти подходы интересны, однако, как ленивый программист, я использую yank всю строку, используя комбинацию цифр +
y
например, у вас есть файл исходного кода с общим количеством 78 строк, вы можете сделать это следующим образом:
gg
получить курсор на первой строкеy
-> он возвращает 78 строк ниже вашего курсора и текущей строкиисточник
В vi Билла Джоя не было понятия «буфер обмена», поэтому я не думаю, что есть встроенный способ сделать это.
Функция автоматического копирования gVim «все, что выделено в буфер обмена» является самой простой или использует внешнюю программу с помощью:!
Для Cygwin's Vim я использую
Может быть, в Ubuntu есть CLI-приложение типа putclip ??
источник
Если ваши пальцы по умолчанию
CTRL-A CTRL-C
, то попробуйте сопоставления из$VIMRUNTIME/mswin.vim
.Я их сопоставил
<Leader><C-a>
и<Leader><C-c>
.источник
Скопируйте весь файл внутри vim или его вкладок
затем перейдите на вкладку и вставьте
и вырезать весь файл использовать
источник
Я добавил следующую строку в мой .vimrc
Это позволяет мне скопировать весь текст в Vim в буфер обмена, нажав
F5
(в командном режиме).источник
Вот команда карты, чтобы выбрать все в буфер обмена, используя CTRL+ a:
Добавьте его в свой .vimrc и все готово ...
источник
Я знаю, что десять лет на это нужно решить, но первые два ответа у меня не сработали, поэтому я продолжал копать. На Redhat (удаленный сервер) - Windows 10 (локальный компьютер), если вы не можете выделить все целиком с помощью мыши, вы застряли, потому что обычные копии не работают между буфером обмена удаленного и локального компьютера.
Итак, чтобы скопировать на удаленный Linux и вставить в локальную Windows, укажите основной буфер с * и сделайте хороший двойной удар
Использование gg" * yy.
источник
Я создал функцию для выполнения этого действия, поместите ее на свой
~/.vimrc
.OBS: Если вы используете neovim, вам также нужен менеджер буфера обмена, такой как xclip. для получения дополнительной информации введите в Neovim
:h checkhealth
Важно также отметить , что не всегда просто
y
будет копировать в буфер обмена, для того , чтобы каждый канал копирования+
которым является «Clipboard Регистр» попытаться установить::set clipboard=unnamed,unnamedplus
. Для более подробной информации см:h unnamed
.Здесь больше информации о vim wikia.
источник
Вы можете использовать короткое замыкание, как этот:
Это означает, что когда вы нажимаете F6 в нормальном режиме, он скопирует весь файл и добавит его в буфер обмена. Или вы можете просто ввести в обычном режиме,
:%y+
а затем нажмитеEnter
.источник
Нажмите левую кнопку мыши, перетащите через раздел, который вы хотите скопировать и отпустить. Код автоматически копируется в буфер обмена.
источник
vi
способ).Я не мог скопировать файлы, используя ответы выше, но у меня есть замазка, и я нашел обходной путь на Quora.
Примечание: он копирует все напечатанные символы этого сеанса в файл журнала, поэтому со временем он станет большим. В этом случае удалите файл журнала и перейдите к целевому файлу, чтобы вы скопировали содержимое этого конкретного файла на свой компьютер.
источник