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

100

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

    
задан Rpj 16.02.2013 в 08:13
источник

9 ответов

120

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

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

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

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

    
ответ дан Attila O. 16.02.2013 в 08:27
источник
48

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

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

    
ответ дан Daniel Jonsson 16.02.2013 в 08:34
20
  1. Если вы хотите скопировать содержимое вставки в один и тот же файл , используйте yank и paste .

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

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

    На консоли введите:

    $ vim --version | grep xterm
    

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

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

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

    Теперь, когда вы держите некоторый текст в регистре + внутри своего редактора vim (например, «+ yy»), он также копируется в системный буфер обмена, который вы можете получить из своей внешней программы, например, gedit editor, используя CTRL + В .

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

    Это 4 основных копии & amp; вставьте условия, связанные с vim. Надеюсь, это поможет.

ответ дан 47dev47null 20.02.2013 в 05:53
12

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

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

    
ответ дан Magnus Jonsson 17.02.2013 в 16:59
10

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

Полезно, если у вас нет доступа к системному буферу (например, в удаленном сеансе ssh)

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

    
ответ дан will-ob 16.02.2013 в 16:09
5

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

    
ответ дан GC 13 17.02.2013 в 06:34
3

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

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

Копировать (YANK)

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

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

Скопировать 2 строки в vi:

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

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

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

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

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

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

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

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

Вставить (PUT)

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

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

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

  • В командном режиме введите P
ответ дан slayernoah 03.11.2013 в 21:43
0

Если вы root : Ctrl + Shift + V

Если вы не-root : Центр щелкните мышью.

    
ответ дан Eliptical view 01.07.2017 в 06:54
0

Просто хотелось бы отметить, что с помощью vim через git-bash на окнах вы можете просто использовать p или щелчок по центру мыши, не находясь в режиме вставки. Используя vim через замазку, вы можете просто щелкнуть правой кнопкой мыши. И подсветка делает копирование.

Я заметил это, потому что я здесь не вижу, что это SE для Ubuntu.

Другие полезные команды:

yy(# of lines ) - yank ( copy )
dd(# of lines ) - delete
p - paste line below current line
shift + p - paste line above current line
u - undo
r - redo
i - insert mode 
v - visual mode
    
ответ дан Tyler Christian 21.07.2017 в 03:27