Вопрос

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

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

Это было полезно?

Решение

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

gg"*yG

Объяснение:

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

Другие советы

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

:%y+

дергать за все ниточки.

Объяснение:

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

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

на Mac

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

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

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

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

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

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

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

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

ggVGy

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

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

:%!xclip -sel clip
u

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

sudo apt-get install xclip

В Ubuntu 12

вы могли бы попытаться установить vim-gnome упаковка:

sudo apt-get install vim-gnome

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

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

В Arch Linux

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

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

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

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

По крайней мере, в терминале Ubuntu (Gnome) стандартная копия также работает (CTRLСДВИГC, хотя, похоже, стандартного сочетания клавиш для select all (кроме АЛЬТE за которым следует A).

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

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

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

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

гВим:

: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 «все, что выделено в буфер обмена» является самой простой или использует внешнюю программу с помощью:!

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

:%!putclip
u

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

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

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

<Ол>
  • gg чтобы получить курсор в первой строке
  • вставить 78 + <=> - > он возвращает 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 у .

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

    nnoremap <F5> :%y+<CR>
    

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

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

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

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top