Чи можна вставити в режимі вставки у 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а потім вставити звідти, що закінчиться, повернувши вас у режим вставки.
Комбінація клавіш: Ctrl-O p
EDIT: Цікаво. Здається, існує спосіб, як перелічено декілька інших людей.
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 / pasting ( y/ p) у звичайному режимі, ось параметр config, який робить це:
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навіть бажано віддалено? Щоб не звучати занадто віддано, мені щиро цікаво, яку філософію vim це відображає, чи якщо це просто історична біда.
inoremap <S-Insert> <F12><C-r>+<F12>(я використовую F12 як пастозний режим). Дякую.
Якщо ви встановили 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 over ssh.
Так. У Windows Ctrl+ Vта Linux натискають обидві кнопки миші майже одночасно.
У Windows я думаю, що цей рядок у моєму _vimrc, ймовірно, робить це:
source $VIMRUNTIME/mswin.vim
У Linux я не пам'ятаю, як це робив. Схоже, я, ймовірно, видалив якийсь рядок із файлу .vimrc за замовчуванням.
В цьому випадку спеціальна карта видається доречною. Це те, що я використовую, щоб вставити витягнуті елементи в режимі вставки:
inoremap <Leader>p <ESC>pa
Мій Leaderключ тут \; це означає, що потрапляння \pв режим вставки буде вставляти попередньо витягнуті елементи / рядки.