Можно ли вставить в режиме вставки в Vim?
385
В режиме вставки нажмите CTRL-R {register}
Примеры:
CTRL-R *
вставит в содержимое буфера обмена CTRL-R "
(безымянный регистр) вставляет последнее удаление или янки. Чтобы найти это в справке типа vim :h i_ctrl-r
CTRL-R *
работает только в GVIM или версиях, скомпилированных для взаимодействия с x. Введитеvim --version
и ищите+xterm_clipboard
. Если у вас его нет, вам нужна другая версия vim. ( vim.wikia.com/wiki/Accessing_the_system_clipboard )+clipboard
, но если у вас есть,+xterm_clipboard
вы должны иметь это в любом случае. На некоторых ОСxterm_clipboard
не применяется.*
регистр можно вставить с помощью щелчка средней кнопкой мыши, в то время+
как это традиционное копирование / вставка. standard.freedesktop.org/clipboards-spec/clipboards-latest.txtЕсли вы не хотите Vim калечить форматирование поступающей вставки текста, вы можете также рассмотреть возможность использования:
:set paste
. Это предотвратит повторное добавление Vim вашего кода. Когда закончите вставку,:set nopaste
вернетесь к нормальному поведению.Также возможно переключить режим с помощью одной клавиши, добавив что-то вроде
set pastetoggle=<F2>
вашего .vimrc. Подробнее о включении автоматического отступа здесь .источник
:set nopaste
отключит режим вставки:set paste!
вероятно, установка пасты очень близко к истории команд, поэтому вы можете просто нажать «:», затем стрелку вверх и добавить «!».:set paste!
Спасибо :)!
в конце команды вvim
тумблерах команда включения и выключения. Таким образом, вам не нужно печатать,:set nopaste
вместо этого вы можете прокрутить историю и:set paste!
снова запустить ту же команду ( ).Нет не напрямую.Тем не менее, вы можете быстро выйти из режима вставки для одной операции в обычном режиме, Ctrl-Oа затем выполнить вставку, которая завершится переходом в режим вставки.Key Combo: Ctrl-O p
РЕДАКТИРОВАТЬ: интересно. Похоже, что есть способ, как перечислили несколько других людей.
источник
esc + p
?esc + p + i
и определенно легче печатать, чемCTRL-R + "
CTRL-R "
. Например, хотя настройки vimrc могут изменить это, вставка чего-либо в новую строку с помощьюCTRL-O p
делает отступы исчезающими.Находясь в режиме вставки, вы можете использовать
Ctrl-R {register}
, где регистр может быть:+
для буфера обмена,*
для буфера обмена X (последний выделенный текст в X),"
для безымянного регистра (последнее удаление или восстановление в 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
источник
Вы можете использовать это, чтобы вставить из буфера обмена с Ctrlv:
И это для визуального выбора в буфер обмена с помощью Ctrlc:
Если вы также хотите использовать буфер обмена по умолчанию для классического vim yanking / pasteing ( y/ p) в обычном режиме, вот вариант конфигурации, который делает это:
С помощью этих конфигов вы можете, например, сначала дернуть в обычном режиме, а затем вставить Ctrlv в режиме вставки. Также вы можете вставлять текст из разных экземпляров vim и разных приложений.
Другой вариант:
Затем вы сможете просто выбрать что-то, перетаскивая мышью в вашей среде X, а затем вставить его в vim. Но (по какой-то причине) вы не сможете что-то дергать ( y) в Vim иshiftinsert потом в другом месте, что, вероятно, весьма ограничивает.
Vim рассказывает об этом: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Для вставки из пользовательских регистров вы можете следовать другим ответам :). Этот ответ в основном касается интеграции Vim с вашим системным буфером обмена.
Обратите внимание, что для
set clipboard=unnamedplus
иset clipboard=unnamed
для работы вам нужно использовать gvim или vimx (vim-X11
): они скомпилированы+xterm_clipboard
. При желании вы можете поместить это в свой.bashrc
псевдонимvim
с помощьюvimx
:Вы можете узнать, есть ли у вашего vim
+xterm_clipboard
информация, предоставленнаяvim --version
.источник
:set paste
и византийский<leader><leader> * y
даже отдаленно желательны? Чтобы не показаться слишком преданным, мне искренне любопытно, в какой именно философии это отражается, или это просто историческое несчастье.inoremap <S-Insert> <F12><C-r>+<F12>
(я использую F12 как pastetoggle). Спасибо.Если вы устанавливаете Vim на использование системного буфера обмена (
:set clipboard=unnamed
), любой текст, который вы копируете в Vim, можно вставить с помощью Shift+ Insert. Shift+ Insertэто просто комбинация клавиш для вставки во всей ОС ( Ctrl+ Insert- соответствующая «копия»).источник
p
вставить текст в буфер обмена?Shift + Insert
для вставки текста, мы должны быть в режиме вставки.Вы также можете использовать среднюю кнопку мыши для вставки в режиме вставки (только для Linux).
источник
Вы можете войти в
-- INSERT (past) --
режим через:или
:set paste
и вход в режим вставки (:set nopaste
чтобы отключить)в
-- INSERT (past) --
режиме просто используйте функцию вставки вашей системы (например, CtrlShiftvв Linux, Cmdvв Mac OS).Эта стратегия очень полезна при использовании vim поверх ssh.
источник
Да. В Windows Ctrl+ Vи в Linux нажатие обеих кнопок мыши практически одновременно.
В Windows я думаю, что эта строка в моем _vimrc, вероятно, делает это:
В Linux я не помню, как я это сделал. Похоже, я, вероятно, удалил какую-то строку из файла .vimrc по умолчанию.
источник
Вставить в режиме вставки
Пользовательская карта кажется подходящей в этом случае. Это то, что я использую для вставки элементов в режиме вставки:
Мой
Leader
ключ здесь\
; это означает, что нажатие\p
в режиме вставки вставит ранее выдернутые элементы / строки.источник
Просто добавьте карту:
перезапустите vim и при нажатии
Crtl+p
в режиме вставки скопированный текст будет вставленисточник