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

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

169
задан 20 July 2018 в 00:28

13 ответов

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

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

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

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

0
ответ дан 20 July 2018 в 00:28

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

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

0
ответ дан 20 July 2018 в 00:28
  1. Если Вы хотите скопировать контент вставки в том же файле, использовать yank и paste.

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

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

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

    $ vim --version | grep xterm
    

    При нахождении-xterm_clipboard у Вас есть две опции:

    1) Скомпилируйте энергию сами с флагом xterm_clipboard на

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

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

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

    Они - 4 основных копии и вставляют условия, связанные с энергией. Я надеюсь, что это помогает.

30
ответ дан 20 July 2018 в 00:28

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

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

0
ответ дан 20 July 2018 в 00:28

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

0
ответ дан 20 July 2018 в 00:28

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

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

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

0
ответ дан 20 July 2018 в 00:28

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

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

Копия (ЯНКИ)

Скопировать одну строку в vi:

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

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

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

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

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

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

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

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

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

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

Вставка (ПОМЕЩАЕТСЯ)

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

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

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

  • В командном режиме ввести P
6
ответ дан 20 July 2018 в 00:28

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

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

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

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

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

0
ответ дан 20 July 2018 в 00:28

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

Если вы re non-root : щелчок по центру мыши.

0
ответ дан 20 July 2018 в 00:28

Я просто хотел заметить, что используя Vim через Git Bash в Windows, вы можете просто использовать p или щелчок по центру мыши, не находясь в режиме вставки. Используя Vim через PuTTY , вы можете просто щелкнуть правой кнопкой мыши. И выделение делает копирование.

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

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

  • yy (количество строк) - yank (копия)
  • dd (количество строк) - удалить
  • p - вставить строку ниже текущей строки
  • Shift + p - вставить строку над текущей строкой
  • u - отменить
  • r - повторить
  • i - режим вставки
  • v - визуальный режим
0
ответ дан 20 July 2018 в 00:28

Вы можете использовать Ctrl + Shift + V для вставки в терминальную версию vim, но для версии GUI vim, например Neovim-Qt, вставка текст из системного буфера обмена с помощью Ctrl + Shift + V просто не будет работать. Вы должны получить доступ к буферу обмена "+ или "* в редакторе vim.

Добавление новой привязки клавиш в .vimrc будет просто командами копирования / вставки:

" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
0
ответ дан 20 July 2018 в 00:28

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

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

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

1
ответ дан 22 November 2019 в 22:48

Во-первых, проверьте, установлена ​​ли в вашем vim поддержка буфера обмена

:echo has('clipboard')

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

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

Чтобы вставить из буфера обмена в обычном режиме, вы можете:

"+p

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

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

:%y+
% ........ the whole file
y ........ 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
2
ответ дан 26 February 2020 в 00:03

Другие вопросы по тегам:

Похожие вопросы: