Вставить в режиме вставки?

Можно ли вставить режим вставки в vim?

Ответ 1

В режиме вставки нажмите CTRL-R {register}. Например, CTRL-R * будет вставлять содержимое буфера обмена, а CTRL-R " (безымянный регистр) вставляет последний delete или yank.

Чтобы найти это в форме справки vim :h i_ctrl-r

Ответ 2

Если вы не хотите, чтобы Vim исказил форматирование в вставленном вложенном тексте, вы также можете рассмотреть возможность использования: :set paste Это предотвратит повторный набор кода вашего vim. По завершении вставки :set nopaste вернется к нормальному поведению.

Также можно переключать режим с помощью одного ключа, добавив что-то вроде set pastetoggle=<F2> в ваш .vimrc. Подробнее о переключении автоматического отступа здесь.

Ответ 3

Нет не напрямую. Что вы можете сделать, хотя быстро выйти из режима вставки для одного режима нормального режима с помощью Ctrl-O, а затем вставить оттуда, который закончится, вернув вас в режим вставки.

Key Combo: Ctrl-O p

EDIT: Интересно. Похоже, что есть способ, как перечисляли несколько других людей.

Ответ 4

В режиме вставки вы можете использовать Ctrl-R {register}, где регистр может быть:

  • + для буфера обмена,
  • * для буфера обмена X (последний выбранный текст в X),
  • " для неназванного регистра (последний delete или yank в Vim),
  • или несколько других (см. :h registers).

Ctrl-R {register} вставляет текст, как если бы он был напечатан.

Ctrl-R Ctrl-O {register} вставляет текст с исходным отступом.

Ctrl-R Ctrl-P {register} вставляет текст и автоматически отступы.

Ctrl-O может использоваться для запуска любой команды нормального режима перед возвратом в режим вставки, поэтому, например, Ctrl-O "+p также можно использовать.

Для получения дополнительной информации просмотрите документацию с помощью :h i_ctrl-r

Ответ 5

Вы можете использовать это, чтобы красиво вставить из буфера обмена Ctrl v:

set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>

И для захвата визуального выделения в буфер обмена с помощью Ctrl c:

vnoremap <C-c> "+y

Если вы также хотите использовать буфер обмена по умолчанию для классического vank yanking/pasteing (y/p) в обычном режиме, вот этот вариант конфигурации:

set clipboard=unnamedplus

С помощью этих конфигураций вы можете, например, сначала держите сначала в нормальном режиме, а затем вставьте с помощью Ctrl v в режиме вставки. Кроме того, вы можете вставлять текст из разных экземпляров vim и разных приложений без каких-либо проблем.

Для вставки из пользовательских регистров вы можете следовать другим ответам:).

Ответ 6

Если вы установили vim для использования системного буфера обмена (:set clipboard=unnamed), то любой текст, который вы копируете в vim, можно вставить с помощью Shift+Insert. Shift + Insert - это просто комбинация клавиш в стиле OS (Ctrl + insert - соответствующая "копия" )

Ответ 7

Вы также можете использовать среднюю кнопку мыши для вставки в режиме вставки (только для Linux).

Ответ 8

Вы можете ввести -- INSERT (past) -- с помощью:

  • Комбинация клавиш: y p

или

  • :set paste и войти в режим вставки (:set nopaste для отключения)

один раз в режиме -- INSERT (past) -- просто используйте функцию вставки систем (например, Ctrl Shift v в Linux, Cmd v в Mac OS).

Эта стратегия очень полезна при использовании vim над ssh.

Ответ 9

Да. В Windows Ctrl + V и в Linux нажмите обе кнопки мыши почти одновременно.

В Windows я думаю, что эта строка в моем _vimrc, вероятно, делает это:

source $VIMRUNTIME/mswin.vim

В Linux я не помню, как я это сделал. Похоже, я, вероятно, удалил некоторую строку из файла .vimrc по умолчанию.

Ответ 10

Вставить в режиме вставки

В этом случае подходящая карта представляется подходящей. Это то, что я использую для вставки выдернутых элементов в режиме вставки:

inoremap <Leader>p <ESC>pa

Мой Leader ключ здесь \; это означает, что нажатие \p в режиме вставки будет вставлять ранее дернутые элементы/линии.