Как скопировать и вставить содержимое в редакторе vi

Я пробовал использовать Ctrl + V для вставки содержимого в документ редактора vi, но Ctrl + V не интерпретируется как вставка.

Сначала убедитесь, что вы находитесь в режиме редактирования (нажмите i). Затем вы можете вставить с Ctrl+Shift+V, если вы находитесь в эмуляторе терминала, например gnome-terminal (или выберите "Вставить" в контекстном меню правой кнопкой мыши).

Вы также можете ввести :set paste в vim перед вставкой, чтобы отключить автоматическое отступление и т.д. Затем :set nopaste после того, как вы вставили содержимое.

Также проверьте этот вопрос на stackoverflow.com для получения дополнительной информации.

Если вы хотите скопировать / вставить строки в vim (в отличие от вставки содержимого буфера обмена), вы захотите проверить дергать команда. Вот такой шпаргалка это могло бы помочь.

Vi (и Vim) работает совсем по-другому по сравнению с обычным текстовым редактором, таким как Gedit. У него также довольно крутая кривая обучения. Если вы хотите выучить некоторые базовые команды, начните с этот интерактивный учебник.

Однако, чтобы ответить на ваш вопрос. Доступ к содержимому системного буфера обмена можно получить через регистр plus. Итак, чтобы вставить что-то из системного буфера обмена, вы можете в обычном режиме нажать: "+p (Не в одно и то же время, а один за другим).

Я всегда использую Shift+Insert когда я хочу вставить текст в терминал, работает во всех терминальных программах.

(Что также является причиной, по которой я никогда не получаю ноутбук, на котором вы не можете нажать Insert без нажатия дополнительной клавиши)

  1. Если вы хотите скопировать и вставить содержимое в одном и том же файле, использовать yank и paste.

  2. Если вы хотите скопировать и вставить содержимое через терминалы, откройте первый файл, выделив нужный текст, затем откройте второй файл в vim (например :tabnew /path/to/second/file) и нажмите p чтобы вставить его.

  3. Если вы хотите скопировать и вставить содержимое из vim во внешнюю программу, вам необходимо получить доступ к системному буферу обмена. Я предполагаю, что вы используете Ubuntu. Версия vim с графическим интерфейсом всегда поддерживает буфер обмена, однако, если вы хотите использовать Vim из терминала, вам придется проверить наличие поддержки X11-clipboard.

    С консоли введите:

    $ vim --version | grep xterm

    Если вы найдете -xterm_clipboard, у вас есть два варианта:

    1) Скомпилируйте vim самостоятельно, установив флаг xterm_clipboard на

    2) Удалите vim, установите гвим (vim-gtk или vim-gnome) вместо этого. Вы можете использовать vim без графического интерфейса, вызвав vim из терминала, как вы делали раньше. На этот раз, когда вы проверяете, вы должны найти +xterm_clipborad.

    Теперь, когда вы нажимаете некоторый текст в регистре + внутри вашего редактора vim (например, "+ yy), он также копируется в системный буфер обмена, который вы можете извлечь из своей внешней программы, такой как редактор gedit, с помощью Ctrl+V.

  4. Если вы хотите скопировать и вставить содержимое из внешней программы в vim, сначала скопируйте ваш текст в системный буфер обмена с помощью Ctrl+C, затем в редакторе vim режим вставки, нажмите на средняя кнопка мыши (обычно колесо) или нажмите Ctrl+Shift+V для вставки.

    Это 4 основных копировать и вставлять условия, связанные с vim. Я надеюсь, что это поможет.

Используйте центральная кнопка мыши чтобы вставить текст, который вы выделили в другом месте.

Это полезно, когда у вас нет доступа к системному буферу обмена (например, в удаленном сеансе SSH).

Должно быть в режиме редактирования / вставки для Vim.

Как только вы войдете в vi, нажмите i чтобы перейти в режим вставки, щелкните правой кнопкой мыши на терминале и выберите вставить.

Подробные инструкции по копированию / вставке строк текста в vi с помощью yank и put

(используйте следующее в командный режим из vi)

Копия (РЫВОК)

Чтобы скопировать одну строку в vi:

  • В командном режиме наведите курсор на строку, которую необходимо скопировать, и введите yy или введите Y

Чтобы скопировать 2 строки в vi:

  • В командном режиме наведите курсор на первую строку, которую необходимо скопировать, и введите 2yy или введите 2Y

(аналогично, можно скопировать любое количество строк)

Чтобы скопировать все строки из текущего местоположения в конец файла:

  • В командном режиме наведите курсор на первую строку, которую необходимо скопировать, и введите yG

Чтобы скопировать весь текст из текущего местоположения в конец текущего слова:

  • В командном режиме переместите курсор в то место, откуда необходимо скопировать текст, и введите yw

Чтобы скопировать весь текст из текущего местоположения в конец строки:

  • В командном режиме переместите курсор в то место, откуда необходимо скопировать текст, и введите y$

Вставить (ВСТАВИТЬ)

Для вставки текста в буфер обмена - после местоположение курсора:

  • В командном режиме введите p

Для вставки текста в буфер обмена - до местоположение курсора:

  • В командном режиме введите P

С Vim 8+ на Linux или Mac теперь вы можете просто использовать встроенную вставку операционной системы (ctrl+shift+V в Linux, cmd+V на Mac). Не нажимайте i для режима Вставки.

Он вставит содержимое буфера обмена вашей операционной системы, сохранив пробелы и вкладки без добавления автоиндентирования. Это эквивалентно старому :set paste, i, ctrl+shift+V, esc, :set nopaste метод.

Вам даже не нужно +clipboard или +xterm_clipboard функции vim больше не установлены. Эта функция называется "вставка в квадратных скобках". Для получения более подробной информации см. https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763

Сначала проверьте, установлена ли в вашем vim поддержка буфера обмена

:echo has('clipboard')

Если он возвращает 1, у вас есть поддержка буфера обмена

Чтобы скопировать в буфер обмена, вы должны либо выбрать свою цель, скажем, абзац vip и затем "+y, что означает для регистра + скопируйте выделенную часть или вы можете просто ввести текст в обычном режиме: "+yip, что означает: в реестр + скопируйте внутренний абзац.

Для вставки из буфера обмена в обычном режиме вы можете:

"+p

В режиме вставки вы можете просто Ctrl-rCtrl-o+. Tha вставит содержимое вашего буфера обмена и сохранит все отступы в том виде, в каком они есть в буфере обмена.

Если вы хотите скопировать весь буфер в буфер обмена, вы можете:

:%y+% ........ the whole filey ........ yank (copy)+ ........ to the clipboard

Чтобы скопировать последнюю команду в буфер обмена:

:let @+=@:

Чтобы скопировать последний поиск в буфер обмена:

 :let @+=@/

для копирования от метки "a" до метки "b" в буфер обмена:

 :'a,'b y+

Чтобы протестировать любую функцию, находящуюся в буфере обмена, вы можете

:@+    (and then type Enter):call FunctionName() (and then type Enter)

Чтобы увидеть, что находится в буфере обмена:

:reg +

Чтобы скопировать все строки с "шаблоном" в буфер обмена, вы можете:

:let @a="":[range]g/pattern/y A:let @+=@a:let @a="" ............ cleanses the register 'a':[range]g/pattern/y A   append to the register A every line with pattern:let @+=@a ............ copy register 'a' to the clipboard

У меня возникла проблема, потому что моя установка Vim не поддерживала буфер обмена:

vim --version | grep clip-clipboard       +insert_expand   +path_extra      +user_commands+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Я установил vim-gnome (который поддерживает буфер обмена), а затем проверил еще раз:

vim --version | grep clipboard+clipboard       +insert_expand   +path_extra      +user_commands+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Теперь я могу копировать и вставлять, используя "+ y" и "+ p" соответственно.

Просто обратите внимание, что основная причина использования Vi заключается в том, что Vim не установлен. Если у вас установлен Vim, вероятно, стоит использовать его вместо этого. На самом деле у Vi нет никаких преимуществ, кроме того, что он уже присутствует в каждой установке Unix. Лучший способ изучить Vim, на мой взгляд, - это открыть эмулятор терминала (не из Vim) и ввести “vimtutor” Это позволит вам быстро добраться до того места, где вы сможете его использовать, примерно за 45 минут.

+1 @BenMordecai - Я уже был знаком с vi (со старых времен), включая его удобные возможности вложенной оболочки, но нуждался в этом обновлении. Отличный небольшой урок. Прошел через это, как легкий ветерок. Спасибо.

Проверьте мой ответ здесь How to copy selected lines to clipboard in vim - Stack Overflow