Можно ли вставить режим вставки в 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
в режиме вставки будет вставлять ранее дернутые элементы/линии.