Можно ли вставить в режиме вставки в Vim?
Можно ли вставить в режиме вставки в Vim?
Ответы:
В режиме вставки нажмите 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:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
И это для визуального выбора в буфер обмена с помощью Ctrlc:
vnoremap <C-c> "+y
Если вы также хотите использовать буфер обмена по умолчанию для классического vim yanking / pasteing ( y/ p) в обычном режиме, вот вариант конфигурации, который делает это:
set clipboard=unnamedplus
С помощью этих конфигов вы можете, например, сначала дернуть в обычном режиме, а затем вставить Ctrlv в режиме вставки. Также вы можете вставлять текст из разных экземпляров vim и разных приложений.
Другой вариант:
set clipboard=unnamed
Затем вы сможете просто выбрать что-то, перетаскивая мышью в вашей среде 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:
if [ -e /usr/bin/vimx ]; then
alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi
Вы можете узнать, есть ли у вашего 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, вероятно, делает это:
source $VIMRUNTIME/mswin.vim
В Linux я не помню, как я это сделал. Похоже, я, вероятно, удалил какую-то строку из файла .vimrc по умолчанию.
Пользовательская карта кажется подходящей в этом случае. Это то, что я использую для вставки элементов в режиме вставки:
inoremap <Leader>p <ESC>pa
Мой Leaderключ здесь \; это означает, что нажатие \pв режиме вставки вставит ранее выдернутые элементы / строки.
Просто добавьте карту:
" ~/.vimrc
inoremap <c-p> <c-r>*
перезапустите vim и при нажатии Crtl+pв режиме вставки скопированный текст будет вставлен