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